@@ -83,6 +83,7 @@ void JsonTextWriter::flush()
8383
8484bool 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 ;
275276for (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
0 commit comments