1 This patch adds a function which can be used to update
2 json key values on all levels, not just one, automagically
3 adding new keys to objects which do not exist in old object.
5 Signed-off-by: Roman Yeryomin <roman@advem.lv>
7 --- a/src/value.c 2011-04-21 13:15:58.000000000 +0300
8 +++ b/src/value.c 2011-07-01 00:23:05.105103308 +0300
13 +int json_object_deep_update(json_t *object, json_t *other)
17 + if(!json_is_object(object) || !json_is_object(other))
20 + iter = json_object_iter(other);
25 + key = json_object_iter_key(iter);
26 + value = json_object_iter_value(iter);
28 + if (!json_is_object(value)) {
29 + if ( json_object_set_nocheck( object, key, value ) )
32 + json_t *subobj = json_object_get(object, key);
34 + json_object_set_nocheck( object, key, value );
35 + iter = json_object_iter_next(other, iter);
38 + if (json_object_deep_update( subobj, value ) == -1)
42 + iter = json_object_iter_next(other, iter);
48 void *json_object_iter(json_t *json)
50 json_object_t *object;