summaryrefslogtreecommitdiffstats
path: root/src/utils-json.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-02-11 16:14:16 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2016-02-11 16:14:16 +0100
commit6b3c3b1916b0af0494041c12a3c86819e441105e (patch)
tree4eac9853f62456d69211321ef7cb8c3819c20cdd /src/utils-json.c
parentbf650bc39188c86cec8a11097f2c341e3f1b54b1 (diff)
utils-json: refactoring
Change-Id: Ie8b49279e727afdbce7b9ea74c767d560c93af32 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/utils-json.c')
-rw-r--r--src/utils-json.c74
1 files changed, 46 insertions, 28 deletions
diff --git a/src/utils-json.c b/src/utils-json.c
index 82908f4..3af2a4c 100644
--- a/src/utils-json.c
+++ b/src/utils-json.c
@@ -22,57 +22,75 @@
#include "utils-json.h"
-int j_object(struct json_object *obj, const char *key, struct json_object **value)
+int j_read_string(struct json_object *obj, const char **value)
+{
+ return j_is_string(obj) && (*value = json_object_get_string(obj)) != NULL;
+}
+
+int j_read_boolean(struct json_object *obj, int *value)
+{
+ return j_is_boolean(obj) && ((*value = (int)json_object_get_boolean(obj)), 1);
+}
+
+int j_read_integer(struct json_object *obj, int *value)
+{
+ return j_is_integer(obj) && ((*value = (int)json_object_get_int(obj)), 1);
+}
+
+const char *j_string(struct json_object *obj, const char *defval)
+{
+ return j_is_string(obj) ? json_object_get_string(obj) : defval;
+}
+
+int j_boolean(struct json_object *obj, int defval)
+{
+ return j_is_boolean(obj) ? json_object_get_boolean(obj) : defval;
+}
+
+int j_integer(struct json_object *obj, int defval)
+{
+ return j_is_integer(obj) ? json_object_get_int(obj) : defval;
+}
+
+int j_read_object_at(struct json_object *obj, const char *key, struct json_object **value)
{
return json_object_object_get_ex(obj, key, value);
}
-int j_string(struct json_object *obj, const char *key, const char **value)
+int j_read_string_at(struct json_object *obj, const char *key, const char **value)
{
json_object *data;
- return j_object(obj, key, &data)
- && json_object_get_type(data) == json_type_string
- && (*value = json_object_get_string(data)) != NULL;
+ return j_read_object_at(obj, key, &data) && j_read_string(data, value);
}
-int j_boolean(struct json_object *obj, const char *key, int *value)
+int j_read_boolean_at(struct json_object *obj, const char *key, int *value)
{
json_object *data;
- return json_object_object_get_ex(obj, key, &data)
- && json_object_get_type(data) == json_type_boolean
- && ((*value = (int)json_object_get_boolean(data)), 1);
+ return j_read_object_at(obj, key, &data) && j_read_boolean(data, value);
}
-int j_integer(struct json_object *obj, const char *key, int *value)
+int j_read_integer_at(struct json_object *obj, const char *key, int *value)
{
json_object *data;
- return json_object_object_get_ex(obj, key, &data)
- && json_object_get_type(data) == json_type_int
- && ((*value = (int)json_object_get_int(data)), 1);
+ return j_read_object_at(obj, key, &data) && j_read_integer(data, value);
}
-const char *j_get_string(struct json_object *obj, const char *key, const char *defval)
+const char *j_string_at(struct json_object *obj, const char *key, const char *defval)
{
- struct json_object *o;
- return json_object_object_get_ex(obj, key, &o)
- && json_object_get_type(o) == json_type_string
- ? json_object_get_string(o) : defval;
+ struct json_object *data;
+ return j_read_object_at(obj, key, &data) ? j_string(data, defval) : defval;
}
-int j_get_boolean(struct json_object *obj, const char *key, int defval)
+int j_boolean_at(struct json_object *obj, const char *key, int defval)
{
- struct json_object *o;
- return json_object_object_get_ex(obj, key, &o)
- && json_object_get_type(o) == json_type_boolean
- ? json_object_get_boolean(o) : defval;
+ struct json_object *data;
+ return j_read_object_at(obj, key, &data) ? j_boolean(data, defval) : defval;
}
-int j_get_integer(struct json_object *obj, const char *key, int defval)
+int j_integer_at(struct json_object *obj, const char *key, int defval)
{
- struct json_object *o;
- return json_object_object_get_ex(obj, key, &o)
- && json_object_get_type(o) == json_type_int
- ? json_object_get_int(o) : defval;
+ struct json_object *data;
+ return j_read_object_at(obj, key, &data) ? j_integer(data, defval) : defval;
}
int j_add(struct json_object *obj, const char *key, struct json_object *val)