Skip to content

Commit f431071

Browse files
committed
fix: make empty arrays null
1 parent 4a2d37c commit f431071

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

src/main/dumpers/schemas/json_exporter.cpp

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,8 @@
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

Comments
 (0)