SnapmaticJson: fix indent of empty array and objects
This commit is contained in:
parent
7e13f01d6d
commit
a10d259db1
1 changed files with 28 additions and 24 deletions
|
@ -27,14 +27,14 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
|
|||
indent = &indent_;
|
||||
switch (jv.kind()) {
|
||||
case boost::json::kind::object: {
|
||||
auto const &obj = jv.get_object();
|
||||
if (!obj.empty()) {
|
||||
if (do_indent) {
|
||||
os << "{\n";
|
||||
indent->append(4, ' ');
|
||||
}
|
||||
else
|
||||
os << "{";
|
||||
auto const &obj = jv.get_object();
|
||||
if (!obj.empty()) {
|
||||
auto it = obj.begin();
|
||||
for (;;) {
|
||||
if (do_indent)
|
||||
|
@ -49,7 +49,6 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
|
|||
else
|
||||
os << ",";
|
||||
}
|
||||
}
|
||||
if (do_indent) {
|
||||
os << "\n";
|
||||
indent->resize(indent->size() - 4);
|
||||
|
@ -57,17 +56,20 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
|
|||
}
|
||||
else
|
||||
os << "}";
|
||||
}
|
||||
else
|
||||
os << "{}";
|
||||
break;
|
||||
}
|
||||
case boost::json::kind::array: {
|
||||
auto const &arr = jv.get_array();
|
||||
if (!arr.empty()) {
|
||||
if (do_indent) {
|
||||
os << "[\n";
|
||||
indent->append(4, ' ');
|
||||
}
|
||||
else
|
||||
os << "[";
|
||||
auto const &arr = jv.get_array();
|
||||
if (!arr.empty()) {
|
||||
auto it = arr.begin();
|
||||
for (;;) {
|
||||
if (do_indent)
|
||||
|
@ -80,7 +82,6 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
|
|||
else
|
||||
os << ",";
|
||||
}
|
||||
}
|
||||
if (do_indent) {
|
||||
os << "\n";
|
||||
indent->resize(indent->size() - 4);
|
||||
|
@ -88,6 +89,9 @@ void serializer(std::ostream &os, const boost::json::value &jv, std::string *ind
|
|||
}
|
||||
else
|
||||
os << "]";
|
||||
}
|
||||
else
|
||||
os << "[]";
|
||||
break;
|
||||
}
|
||||
case boost::json::kind::string: {
|
||||
|
|
Loading…
Reference in a new issue