summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--json-glib/json-generator.c10
-rw-r--r--tests/test-04.c61
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);