summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/utils-json.c20
-rw-r--r--src/utils-json.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/src/utils-json.c b/src/utils-json.c
index 3af2a4c..eb1f90b 100644
--- a/src/utils-json.c
+++ b/src/utils-json.c
@@ -117,3 +117,23 @@ int j_add_integer(struct json_object *obj, const char *key, int val)
return str ? j_add(obj, key, str) : (errno = ENOMEM, 0);
}
+struct json_object *j_add_new_array(struct json_object *obj, const char *key)
+{
+ struct json_object *result = json_object_new_array();
+ if (result != NULL && !j_add(obj, key, result)) {
+ json_object_put(result);
+ result = NULL;
+ }
+ return result;
+}
+
+struct json_object *j_add_new_object(struct json_object *obj, const char *key)
+{
+ struct json_object *result = json_object_new_object();
+ if (result != NULL && !j_add(obj, key, result)) {
+ json_object_put(result);
+ result = NULL;
+ }
+ return result;
+}
+
diff --git a/src/utils-json.h b/src/utils-json.h
index 4b86fa9..9d495f8 100644
--- a/src/utils-json.h
+++ b/src/utils-json.h
@@ -61,4 +61,6 @@ extern int j_add(struct json_object *obj, const char *key, struct json_object *v
extern int j_add_string(struct json_object *obj, const char *key, const char *val);
extern int j_add_boolean(struct json_object *obj, const char *key, int val);
extern int j_add_integer(struct json_object *obj, const char *key, int val);
+extern struct json_object *j_add_new_array(struct json_object *obj, const char *key);
+extern struct json_object *j_add_new_object(struct json_object *obj, const char *key);