From 01c40dda1ffd96fcf479e8b2ea0ea570e3d7bf09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fin=20Maa=C3=9F?= Date: Mon, 18 Mar 2024 10:55:06 +0100 Subject: [PATCH] json: add JSON_TOK_ENCODED_OBJ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add support to include a already encoded object to a object Signed-off-by: Fin Maaß --- include/zephyr/data/json.h | 1 + lib/utils/json.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/include/zephyr/data/json.h b/include/zephyr/data/json.h index 7534b3674f6..07393109009 100644 --- a/include/zephyr/data/json.h +++ b/include/zephyr/data/json.h @@ -45,6 +45,7 @@ enum json_tokens { 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 2041db757e9..73ca67e2f36 100644 --- a/lib/utils/json.c +++ b/lib/utils/json.c @@ -1002,6 +1002,13 @@ static int opaque_string_encode(struct json_obj_token *opaque, json_append_bytes 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 @@ static int encode(const struct json_obj_descr *descr, const void *val, 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; }