diff options
| -rw-r--r-- | json-glib/json-generator.c | 10 | ||||
| -rw-r--r-- | tests/test-04.c | 61 |
2 files changed, 71 insertions, 0 deletions
diff --git a/json-glib/json-generator.c b/json-glib/json-generator.c index 0049089..df3bf55 100644 --- a/json-glib/json-generator.c +++ b/json-glib/json-generator.c @@ -261,6 +261,10 @@ dump_array (JsonGenerator *generator, break; case JSON_NODE_ARRAY: + value = dump_array (generator, sub_level, json_node_get_array (cur), NULL); + g_string_append (buffer, value); + break; + case JSON_NODE_OBJECT: break; } @@ -274,6 +278,12 @@ dump_array (JsonGenerator *generator, g_string_append_c (buffer, ' '); } + if (pretty) + { + for (i = 0; i < (level * indent); i++) + g_string_append_c (buffer, ' '); + } + g_string_append_c (buffer, ']'); if (length) diff --git a/tests/test-04.c b/tests/test-04.c index 21a3929..8b70a0d 100644 --- a/tests/test-04.c +++ b/tests/test-04.c @@ -14,6 +14,7 @@ test_empty (JsonGenerator *generator) json_generator_set_root (generator, root); + g_object_set (generator, "pretty", FALSE, NULL); data = json_generator_to_data (generator, &len); g_print ("*** Empty array (len:%d): `%s'\n", len, data); @@ -73,6 +74,7 @@ test_simple (JsonGenerator *generator) json_node_take_array (root, array); json_generator_set_root (generator, root); + g_object_set (generator, "pretty", FALSE, NULL); data = json_generator_to_data (generator, &len); g_print ("*** Simple array (len:%d): `%s'\n", len, data); g_free (data); @@ -83,6 +85,64 @@ test_simple (JsonGenerator *generator) g_free (data); } +static void +test_nested (JsonGenerator *generator) +{ + JsonNode *root, *val, *nested_val; + JsonArray *array, *nested; + GValue value = { 0, }; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_ARRAY); + array = json_array_sized_new (3); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_BOOLEAN); + g_value_set_boolean (&value, TRUE); + json_node_set_value (val, &value); + json_array_add_element (array, val); + g_value_unset (&value); + + { + val = json_node_new (JSON_NODE_ARRAY); + nested = json_array_new (); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_BOOLEAN); + g_value_set_boolean (&value, FALSE); + json_node_set_value (nested_val, &value); + json_array_add_element (nested, nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_NULL); + json_array_add_element (nested, nested_val); + + json_node_take_array (val, nested); + json_array_add_element (array, val); + } + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 42); + json_node_set_value (val, &value); + json_array_add_element (array, val); + g_value_unset (&value); + + json_node_take_array (root, array); + json_generator_set_root (generator, root); + + g_object_set (generator, "pretty", FALSE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Nested array (len:%d): `%s'\n", len, data); + g_free (data); + + g_object_set (generator, "pretty", TRUE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Nested array (pretty, len:%d):\n%s\n", len, data); + g_free (data); +} + int main (int argc, char *argv[]) { @@ -94,6 +154,7 @@ main (int argc, char *argv[]) test_empty (generator); test_simple (generator); + test_nested (generator); g_object_unref (generator); |
