diff options
author | Eric Haszlakiewicz <erh+git@nimenees.com> | 2022-07-30 19:27:14 +0000 |
---|---|---|
committer | Eric Haszlakiewicz <erh+git@nimenees.com> | 2022-07-30 19:27:14 +0000 |
commit | 9749b0cb66b32ddac4bbbca28dd9009968722a9f (patch) | |
tree | b95232e9864cc3c81b9915b46d492c21da88e7ff | |
parent | 2e9b7456a5608efbd49fd4c4b51cb6ed7b63cc15 (diff) | |
download | json-c-9749b0cb66b32ddac4bbbca28dd9009968722a9f.tar.gz |
When serializing with JSON_C_TO_STRING_PRETTY set, keep the opening and closing curly or square braces on same line for empty objects or arrays. Issue #778.
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | json_object.c | 22 | ||||
-rw-r--r-- | tests/test1.c | 5 | ||||
-rw-r--r-- | tests/test1.expected | 2 | ||||
-rw-r--r-- | tests/test1Formatted_plain.expected | 2 | ||||
-rw-r--r-- | tests/test1Formatted_pretty.expected | 4 | ||||
-rw-r--r-- | tests/test1Formatted_spaced.expected | 2 | ||||
-rw-r--r-- | tests/test1Formatted_spaced_pretty.expected | 4 | ||||
-rw-r--r-- | tests/test1Formatted_spaced_pretty_pretty_tab.expected | 4 |
9 files changed, 42 insertions, 20 deletions
@@ -1,4 +1,21 @@ +0.17 (future release) +======================================== + +Deprecated and removed features: +-------------------------------- +* ... + +New features +------------ +* ... + +Significant changes and bug fixes +--------------------------------- +* When serializing with JSON_C_TO_STRING_PRETTY set, keep the opening and + closing curly or square braces on same line for empty objects or arrays. + + 0.16 (up to commit 66dcdf5, 2022-04-13) ======================================== diff --git a/json_object.c b/json_object.c index 581b1e2..14cd594 100644 --- a/json_object.c +++ b/json_object.c @@ -460,16 +460,14 @@ static int json_object_object_to_json_string(struct json_object *jso, struct pri struct json_object_iter iter; printbuf_strappend(pb, "{" /*}*/); - if (flags & JSON_C_TO_STRING_PRETTY) - printbuf_strappend(pb, "\n"); json_object_object_foreachC(jso, iter) { if (had_children) { printbuf_strappend(pb, ","); - if (flags & JSON_C_TO_STRING_PRETTY) - printbuf_strappend(pb, "\n"); } + if (flags & JSON_C_TO_STRING_PRETTY) + printbuf_strappend(pb, "\n"); had_children = 1; if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY)) printbuf_strappend(pb, " "); @@ -485,10 +483,9 @@ static int json_object_object_to_json_string(struct json_object *jso, struct pri else if (iter.val->_to_json_string(iter.val, pb, level + 1, flags) < 0) return -1; } - if (flags & JSON_C_TO_STRING_PRETTY) + if ((flags & JSON_C_TO_STRING_PRETTY) && had_children) { - if (had_children) - printbuf_strappend(pb, "\n"); + printbuf_strappend(pb, "\n"); indent(pb, level, flags); } if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY)) @@ -1381,17 +1378,15 @@ static int json_object_array_to_json_string(struct json_object *jso, struct prin size_t ii; printbuf_strappend(pb, "["); - if (flags & JSON_C_TO_STRING_PRETTY) - printbuf_strappend(pb, "\n"); for (ii = 0; ii < json_object_array_length(jso); ii++) { struct json_object *val; if (had_children) { printbuf_strappend(pb, ","); - if (flags & JSON_C_TO_STRING_PRETTY) - printbuf_strappend(pb, "\n"); } + if (flags & JSON_C_TO_STRING_PRETTY) + printbuf_strappend(pb, "\n"); had_children = 1; if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY)) printbuf_strappend(pb, " "); @@ -1402,10 +1397,9 @@ static int json_object_array_to_json_string(struct json_object *jso, struct prin else if (val->_to_json_string(val, pb, level + 1, flags) < 0) return -1; } - if (flags & JSON_C_TO_STRING_PRETTY) + if ((flags & JSON_C_TO_STRING_PRETTY) && had_children) { - if (had_children) - printbuf_strappend(pb, "\n"); + printbuf_strappend(pb, "\n"); indent(pb, level, flags); } diff --git a/tests/test1.c b/tests/test1.c index 01796ab..befd246 100644 --- a/tests/test1.c +++ b/tests/test1.c @@ -311,6 +311,11 @@ int main(int argc, char **argv) { printf("\t%s: %s\n", key, json_object_to_json_string(val)); } + + json_object *empty_array = json_object_new_array(); + json_object *empty_obj = json_object_new_object(); + json_object_object_add(my_object, "empty_array", empty_array); + json_object_object_add(my_object, "empty_obj", empty_obj); printf("my_object.to_string()=%s\n", json_object_to_json_string(my_object)); json_object_put(my_array); diff --git a/tests/test1.expected b/tests/test1.expected index 4b6b252..b473a8b 100644 --- a/tests/test1.expected +++ b/tests/test1.expected @@ -75,4 +75,4 @@ my_object= foo: "bar" bool0: false bool1: true -my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true } +my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true, "empty_array": [ ], "empty_obj": { } } diff --git a/tests/test1Formatted_plain.expected b/tests/test1Formatted_plain.expected index 128e274..ad12d99 100644 --- a/tests/test1Formatted_plain.expected +++ b/tests/test1Formatted_plain.expected @@ -75,4 +75,4 @@ my_object= foo: "bar" bool0: false bool1: true -my_object.to_string()={"abc":12,"foo":"bar","bool0":false,"bool1":true} +my_object.to_string()={"abc":12,"foo":"bar","bool0":false,"bool1":true,"empty_array":[],"empty_obj":{}} diff --git a/tests/test1Formatted_pretty.expected b/tests/test1Formatted_pretty.expected index b67185f..ab2cc78 100644 --- a/tests/test1Formatted_pretty.expected +++ b/tests/test1Formatted_pretty.expected @@ -97,5 +97,7 @@ my_object.to_string()={ "abc":12, "foo":"bar", "bool0":false, - "bool1":true + "bool1":true, + "empty_array":[], + "empty_obj":{} } diff --git a/tests/test1Formatted_spaced.expected b/tests/test1Formatted_spaced.expected index fe6979d..f57bd05 100644 --- a/tests/test1Formatted_spaced.expected +++ b/tests/test1Formatted_spaced.expected @@ -75,4 +75,4 @@ my_object= foo: "bar" bool0: false bool1: true -my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true } +my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true, "empty_array": [ ], "empty_obj": { } } diff --git a/tests/test1Formatted_spaced_pretty.expected b/tests/test1Formatted_spaced_pretty.expected index 104a554..c88729f 100644 --- a/tests/test1Formatted_spaced_pretty.expected +++ b/tests/test1Formatted_spaced_pretty.expected @@ -97,5 +97,7 @@ my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, - "bool1": true + "bool1": true, + "empty_array": [], + "empty_obj": {} } diff --git a/tests/test1Formatted_spaced_pretty_pretty_tab.expected b/tests/test1Formatted_spaced_pretty_pretty_tab.expected index f9a8e87..bab239f 100644 --- a/tests/test1Formatted_spaced_pretty_pretty_tab.expected +++ b/tests/test1Formatted_spaced_pretty_pretty_tab.expected @@ -97,5 +97,7 @@ my_object.to_string()={ "abc": 12, "foo": "bar", "bool0": false, - "bool1": true + "bool1": true, + "empty_array": [], + "empty_obj": {} } |