11.2. json
— JSON encoding and decoding¶
Source code: src/encode/json.h, src/encode/json.c
Test code: tst/encode/json/main.c
Test coverage: src/encode/json.c
Enums
Functions
-
int
json_init
(struct json_t *self_p, struct json_tok_t *tokens_p, int num_tokens)¶ Initialize given JSON object. The JSON object must be initialized before it can be used to parse and dump JSON data.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: JSON object to initialize.tokens_p
: Array of tokens. The tokens are either filled by the parsing functionjson_parse()
, or already filled by the user when calling this function. The latter can be used to dump the tokens as a string by callingjson_dump()
orjson_dumps()
.num_tokens
: Number of tokens in the array.
-
int
json_parse
(struct json_t *self_p, const char *js_p, size_t len)¶ Parse given JSON data string into and array of tokens, each describing a single JSON object.
- Return
- Number of decoded tokens or negative error code.
- Parameters
self_p
: JSON object.js_p
: JSON string to parse.len
: JSON string length in bytes.
-
ssize_t
json_dumps
(struct json_t *self_p, struct json_tok_t *tokens_p, char *js_p)¶ Format and write given JSON tokens into a string.
- Return
- Dumped string length (not including termination) or negative error code.
- Parameters
self_p
: JSON object.tokens_p
: Root token to dump. Set to NULL to dump the whole object.js_p
: Dumped null terminated JSON string.
-
ssize_t
json_dump
(struct json_t *self_p, struct json_tok_t *tokens_p, void *out_p)¶ Format and write given JSON tokens to given channel.
- Return
- Dumped string length (not including termination) or negative error code.
- Parameters
self_p
: JSON object.tokens_p
: Root token to dump. Set to NULL to dump the whole object.out_p
: Channel to dump the null terminated JSON string to.
-
struct json_tok_t *
json_root
(struct json_t *self_p)¶ Get the root token.
- Return
- The root token or NULL on failure.
- Parameters
self_p
: JSON object.
-
struct json_tok_t *
json_object_get
(struct json_t *self_p, const char *key_p, struct json_tok_t *object_p)¶ Get the value the string token with given key.
- Return
- Token or NULL on error.
- Parameters
self_p
: JSON object.key_p
: Key of the value to get.object_p
: The object to get the value from.
-
struct json_tok_t *
json_object_get_primitive
(struct json_t *self_p, const char *key_p, struct json_tok_t *object_p)¶ Get the value of the primitive token with given key.
- Return
- Token or NULL on error.
- Parameters
self_p
: JSON object.key_p
: Key of the value to get.object_p
: The object to get the value from.
-
struct json_tok_t *
json_array_get
(struct json_t *self_p, int index, struct json_tok_t *array_p)¶ Get the token of given array index.
- Return
- Token or NULL on error.
- Parameters
self_p
: JSON object.index
: Index to get.array_p
: The array to get the element from.
-
void
json_token_object
(struct json_tok_t *token_p, int num_keys)¶ Initialize a JSON object token.
- Parameters
token_p
: Initialized token.num_keys
: Number of keys in the object.
-
void
json_token_array
(struct json_tok_t *token_p, int num_elements)¶ Initialize a JSON array token.
- Parameters
token_p
: Initialized token.num_elements
: Number of array elements.
-
void
json_token_true
(struct json_tok_t *token_p)¶ Initialize a JSON boolean true token.
- Parameters
token_p
: Initialized token.
-
void
json_token_false
(struct json_tok_t *token_p)¶ Initialize a JSON boolean false token.
- Parameters
token_p
: Initialized token.
-
void
json_token_null
(struct json_tok_t *token_p)¶ Initialize a JSON null token.
- Parameters
token_p
: Initialized token.
-
void
json_token_number
(struct json_tok_t *token_p, const char *buf_p, size_t size)¶ Initialize a JSON number (integer/float) token.
- Parameters
token_p
: Initialized token.buf_p
: Number as a string.size
: String length.
-
void
json_token_string
(struct json_tok_t *token_p, const char *buf_p, size_t size)¶ Initialize a JSON string token.
- Parameters
token_p
: Initialized token.buf_p
: String.size
: String length.
-
struct
json_tok_t
¶
-
struct
json_t
¶