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;
 	}