Skip to content

Commit 0787e4b

Browse files
fix bugs for json writer
1 parent 58f094f commit 0787e4b

2 files changed

Lines changed: 13 additions & 10 deletions

File tree

src/database/manager/parser/json/GJWriter.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ void JsonTextWriter::flush()
8383

8484
bool JsonTextWriter::begin(int i)
8585
{
86+
_has_data_entry = false;
8687
// <stream format>
8788
(*_stream) <<"{"<< std::endl;
8889
write_header(i+1);
@@ -273,10 +274,11 @@ void JsonTextWriter::writeTopStruct(int i)
273274
auto element_list = str->get_element_list();
274275
temp=0;
275276
for (size_t j = 0; j < element_list.size(); j++) {
276-
// if (j != 0) {
277-
// (*_stream) << ",\n";
278-
// }
279-
write_struct_element(element_list[j],i,temp!=0);
277+
size_t previous_temp = temp;
278+
write_struct_element(element_list[j], i, _has_data_entry || temp != 0);
279+
if (temp != previous_temp) {
280+
_has_data_entry = true;
281+
}
280282
}
281283
write_endstr(i,1);
282284

@@ -341,6 +343,9 @@ void JsonTextWriter::writeStruct(int i)
341343

342344

343345
// <structure>
346+
if (_has_data_entry) {
347+
(*_stream) << ",\n";
348+
}
344349
write_bgnstr(str, i+1);
345350
write_strname(str, i + 2);
346351

@@ -358,10 +363,7 @@ void JsonTextWriter::writeStruct(int i)
358363
// if(element_list.size()>1)
359364
(*_stream) <<std::endl<<indent3<<"]";
360365
write_endstr(i+1,0);
361-
362-
if (k != structListSize - 1) {
363-
(*_stream) << ",\n";
364-
}
366+
_has_data_entry = true;
365367
}
366368
/// @brief clear
367369
flush();
@@ -892,4 +894,4 @@ void JsonTextWriter::write_layer(JsonLayer layer,int i) const
892894
(*_stream) <<indent<< "\"layer\" : " << layer <<","<< std::endl;
893895
}
894896

895-
} // namespace idb
897+
} // namespace idb

src/database/manager/parser/json/GJWriter.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class JsonTextWriter
6161
// members
6262
JsonData* _data = nullptr;
6363
std::ofstream* _stream = nullptr;
64+
bool _has_data_entry = false;
6465

6566
void flush();
6667

@@ -96,4 +97,4 @@ class JsonTextWriter
9697
void write_layer(JsonLayer,int i) const;
9798
};
9899

99-
} // namespace idb
100+
} // namespace idb

0 commit comments

Comments
 (0)