json: add JSON_TOK_ENCODED_OBJ
add support to include a already encoded object
to a object
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
diff --git a/include/zephyr/data/json.h b/include/zephyr/data/json.h
index 7534b36..0739310 100644
--- a/include/zephyr/data/json.h
+++ b/include/zephyr/data/json.h
@@ -45,6 +45,7 @@
JSON_TOK_FLOAT = '1',
JSON_TOK_OPAQUE = '2',
JSON_TOK_OBJ_ARRAY = '3',
+ JSON_TOK_ENCODED_OBJ = '4',
JSON_TOK_TRUE = 't',
JSON_TOK_FALSE = 'f',
JSON_TOK_NULL = 'n',
diff --git a/lib/utils/json.c b/lib/utils/json.c
index 2041db7..73ca67e 100644
--- a/lib/utils/json.c
+++ b/lib/utils/json.c
@@ -1002,6 +1002,13 @@
return append_bytes("\"", 1, data);
}
+static int encoded_obj_encode(const char **str, json_append_bytes_t append_bytes, void *data)
+{
+ size_t len = strlen(*str);
+
+ return append_bytes(*str, len, data);
+}
+
static int bool_encode(const bool *value, json_append_bytes_t append_bytes,
void *data)
{
@@ -1036,6 +1043,8 @@
return float_ascii_encode(ptr, append_bytes, data);
case JSON_TOK_OPAQUE:
return opaque_string_encode(ptr, append_bytes, data);
+ case JSON_TOK_ENCODED_OBJ:
+ return encoded_obj_encode(ptr, append_bytes, data);
default:
return -EINVAL;
}