diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2020-08-24 16:19:59 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2020-08-24 17:51:57 +0100 |
commit | 55f4392952772aac74c40c30377a8dd899ac2b88 (patch) | |
tree | 95d744f8ce4e38ca0449874a453d63a7ea45177c /json-glib/json-generator.c | |
parent | f24bc0f561c4e966006b0ad5cb51f230a69617c1 (diff) | |
download | json-glib-55f4392952772aac74c40c30377a8dd899ac2b88.tar.gz |
Gracefully handle empty arrays and objects
Don't pretty print newlines. This requires a change in the generator
test, but the pretty printing format is not stable anyway, so we can get
away with it.
Diffstat (limited to 'json-glib/json-generator.c')
-rw-r--r-- | json-glib/json-generator.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/json-glib/json-generator.c b/json-glib/json-generator.c index 346be65..4ccf320 100644 --- a/json-glib/json-generator.c +++ b/json-glib/json-generator.c @@ -394,13 +394,16 @@ dump_array (JsonGenerator *generator, g_string_append_c (buffer, '['); - if (pretty) - g_string_append_c (buffer, '\n'); + if (array_len == 0) + goto out; for (i = 0; i < array_len; i++) { JsonNode *cur = json_array_get_element (array, i); + if (i == 0 && pretty) + g_string_append_c (buffer, '\n'); + dump_node (generator, buffer, level + 1, NULL, cur); if ((i + 1) != array_len) @@ -416,6 +419,7 @@ dump_array (JsonGenerator *generator, g_string_append_c (buffer, priv->indent_char); } +out: g_string_append_c (buffer, ']'); } @@ -434,9 +438,6 @@ dump_object (JsonGenerator *generator, g_string_append_c (buffer, '{'); - if (pretty) - g_string_append_c (buffer, '\n'); - members = json_object_get_members_internal (object); for (l = members->head; l != NULL; l = l->next) @@ -444,6 +445,9 @@ dump_object (JsonGenerator *generator, const gchar *member_name = l->data; JsonNode *cur = json_object_get_member (object, member_name); + if (l->prev == NULL && pretty) + g_string_append_c (buffer, '\n'); + dump_node (generator, buffer, level + 1, member_name, cur); if (l->next != NULL) |