summaryrefslogtreecommitdiff
path: root/json-glib/json-array.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2010-06-16 11:54:55 +0100
committerEmmanuele Bassi <ebassi@linux.intel.com>2010-06-16 11:54:55 +0100
commit3f8c8f99126dc1a70d847eded13afd4b64395250 (patch)
tree4481b56117f37ed7be0e3a40182e9c0d39d5c6ca /json-glib/json-array.c
parent471bcf28589e0929984c4e6a097ae273b017b3f0 (diff)
downloadjson-glib-3f8c8f99126dc1a70d847eded13afd4b64395250.tar.gz
Allow NULL as a value for strings, arrays and objects
We should not warn when asking for a string, array or object if the contents were 'null'.
Diffstat (limited to 'json-glib/json-array.c')
-rw-r--r--json-glib/json-array.c42
1 files changed, 33 insertions, 9 deletions
diff --git a/json-glib/json-array.c b/json-glib/json-array.c
index 5149aad..6e0dada 100644
--- a/json-glib/json-array.c
+++ b/json-glib/json-array.c
@@ -343,7 +343,10 @@ json_array_get_string_element (JsonArray *array,
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_VALUE (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_string (node);
}
@@ -401,7 +404,10 @@ json_array_get_array_element (JsonArray *array,
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_ARRAY, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_ARRAY (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_array (node);
}
@@ -431,7 +437,10 @@ json_array_get_object_element (JsonArray *array,
node = g_ptr_array_index (array->elements, index_);
g_return_val_if_fail (node != NULL, NULL);
- g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT, NULL);
+ g_return_val_if_fail (JSON_NODE_HOLDS_OBJECT (node) || JSON_NODE_HOLDS_NULL (node), NULL);
+
+ if (JSON_NODE_HOLDS_NULL (node))
+ return NULL;
return json_node_get_object (node);
}
@@ -565,8 +574,13 @@ json_array_add_string_element (JsonArray *array,
g_return_if_fail (array != NULL);
g_return_if_fail (value != NULL);
- node = json_node_new (JSON_NODE_VALUE);
- json_node_set_string (node, value);
+ if (value != NULL)
+ {
+ node = json_node_new (JSON_NODE_VALUE);
+ json_node_set_string (node, value);
+ }
+ else
+ node = json_node_new (JSON_NODE_NULL);
g_ptr_array_add (array->elements, node);
}
@@ -614,8 +628,13 @@ json_array_add_array_element (JsonArray *array,
g_return_if_fail (array != NULL);
g_return_if_fail (value != NULL);
- node = json_node_new (JSON_NODE_ARRAY);
- json_node_take_array (node, value);
+ if (value != NULL)
+ {
+ node = json_node_new (JSON_NODE_ARRAY);
+ json_node_take_array (node, value);
+ }
+ else
+ node = json_node_new (JSON_NODE_NULL);
g_ptr_array_add (array->elements, node);
}
@@ -641,8 +660,13 @@ json_array_add_object_element (JsonArray *array,
g_return_if_fail (array != NULL);
g_return_if_fail (value != NULL);
- node = json_node_new (JSON_NODE_OBJECT);
- json_node_take_object (node, value);
+ if (value != NULL)
+ {
+ node = json_node_new (JSON_NODE_OBJECT);
+ json_node_take_object (node, value);
+ }
+ else
+ node = json_node_new (JSON_NODE_NULL);
g_ptr_array_add (array->elements, node);
}