Empty JSON objects should be printed as {}, not { \n} + fix the new Json hasher not sorting keys
[skip ci]
This commit is contained in:
parent
83ca73b299
commit
1587bb2409
@ -981,9 +981,17 @@ void Json::getHash(XXHash3& hasher) const {
|
|||||||
json.getHash(hasher);
|
json.getHash(hasher);
|
||||||
}
|
}
|
||||||
else if (type == Json::Type::Object) {
|
else if (type == Json::Type::Object) {
|
||||||
for (auto const& pair : *m_data.get<JsonObjectConstPtr>()) {
|
auto& object = *m_data.get<JsonObjectConstPtr>();
|
||||||
hasher.push(pair.first.utf8Ptr(), pair.first.utf8Size());
|
List<JsonObject::const_iterator> iterators;
|
||||||
pair.second.getHash(hasher);
|
iterators.reserve(object.size());
|
||||||
|
for (auto i = object.begin(); i != object.end(); ++i)
|
||||||
|
iterators.append(i);
|
||||||
|
iterators.sort([](JsonObject::const_iterator a, JsonObject::const_iterator b) {
|
||||||
|
return a->first < b->first;
|
||||||
|
});
|
||||||
|
for (auto& iter : iterators) {
|
||||||
|
hasher.push(iter->first.utf8Ptr(), iter->first.utf8Size());
|
||||||
|
iter->second.getHash(hasher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -521,11 +521,12 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void endObject() {
|
void endObject() {
|
||||||
|
if (currentState() == ObjectElement) {
|
||||||
|
if (m_pretty)
|
||||||
|
write('\n');
|
||||||
|
indent();
|
||||||
|
}
|
||||||
popState(Object);
|
popState(Object);
|
||||||
|
|
||||||
if (m_pretty)
|
|
||||||
write('\n');
|
|
||||||
indent();
|
|
||||||
write('}');
|
write('}');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user