1919
2020#include " json_exporter.h"
2121#include " globalvariables.h"
22- #include " interfaces.h"
2322#include < filesystem>
2423#include < fstream>
25- #include < map>
26- #include < unordered_set>
27- #include < algorithm>
2824#include < optional>
2925#include < spdlog/spdlog.h>
3026#include < nlohmann/json.hpp>
@@ -157,7 +153,10 @@ void DumpClasses(const std::vector<IntermediateSchemaClass>& classes, json& clas
157153 json classObj;
158154 classObj[" name" ] = intermediateClass.name ;
159155 classObj[" module" ] = intermediateClass.module ;
160- classObj[" metadata" ] = SerializeMetadataArray (intermediateClass.metadata );
156+
157+ auto classMetadataArr = SerializeMetadataArray (intermediateClass.metadata );
158+ if (classMetadataArr.size ())
159+ classObj[" metadata" ] = std::move (classMetadataArr);
161160
162161 json parents = json::array ();
163162 for (const auto & parent : intermediateClass.parents )
@@ -168,7 +167,8 @@ void DumpClasses(const std::vector<IntermediateSchemaClass>& classes, json& clas
168167 parents.push_back (std::move (parentObj));
169168 }
170169
171- classObj[" parents" ] = parents;
170+ if (parents.size ())
171+ classObj[" parents" ] = std::move (parents);
172172
173173 json fields = json::array ();
174174 for (const auto & field : intermediateClass.fields )
@@ -178,10 +178,16 @@ void DumpClasses(const std::vector<IntermediateSchemaClass>& classes, json& clas
178178 fieldObj[" name" ] = field.name ;
179179 fieldObj[" offset" ] = field.offset ;
180180 fieldObj[" type" ] = SerializeType (field.type );
181- fieldObj[" metadata" ] = SerializeMetadataArray (field.metadata );
181+
182+ auto fieldMetadataArr = SerializeMetadataArray (field.metadata );
183+ if (fieldMetadataArr.size ())
184+ fieldObj[" metadata" ] = std::move (fieldMetadataArr);
185+
182186 fields.push_back (fieldObj);
183187 }
184- classObj[" fields" ] = fields;
188+
189+ if (fields.size ())
190+ classObj[" fields" ] = std::move (fields);
185191
186192 classesArray.push_back (std::move (classObj));
187193 }
@@ -196,7 +202,9 @@ void DumpEnums(const std::vector<IntermediateSchemaEnum>& enums, json& enumsArra
196202 enumObj[" module" ] = intermediateEnum.module ;
197203 enumObj[" alignment" ] = intermediateEnum.stringAlignment ;
198204
199- enumObj[" metadata" ] = SerializeMetadataArray (intermediateEnum.metadata );
205+ auto enumMetadataArr = SerializeMetadataArray (intermediateEnum.metadata );
206+ if (enumMetadataArr.size ())
207+ enumObj[" metadata" ] = std::move (enumMetadataArr);
200208
201209 json members = json::array ();
202210 for (const auto & member : intermediateEnum.members )
@@ -205,10 +213,16 @@ void DumpEnums(const std::vector<IntermediateSchemaEnum>& enums, json& enumsArra
205213 memberObj[" name" ] = member.name ;
206214 memberObj[" value" ] = member.value ;
207215
208- memberObj[" metadata" ] = SerializeMetadataArray (member.metadata );
216+ auto memberMetadataArr = SerializeMetadataArray (member.metadata );
217+ if (memberMetadataArr.size ())
218+ memberObj[" metadata" ] = std::move (memberMetadataArr);
219+
209220 members.push_back (std::move (memberObj));
210221 }
211- enumObj[" members" ] = std::move (members);
222+
223+ if (members.size ())
224+ enumObj[" members" ] = std::move (members);
225+
212226 enumsArray.push_back (std::move (enumObj));
213227 }
214228}
0 commit comments