JSON
JSON Utilities. More...
Modules |
|
Types | |
JSON data types.
|
|
Macros | |
JSON macros.
|
|
Functions |
|
gos_result_t | gos_json_parse_context_init ( gos_json_parse_context_t **context_ptr, const gos_json_parse_config_t *config) |
Initialize JSON parsing context.
More...
|
|
gos_result_t | gos_json_parse_context_deinit ( gos_json_parse_context_t *context) |
Cleanup JSON parser context.
More...
|
|
gos_result_t | gos_json_parse_chunked ( gos_json_parse_context_t *context, void *user) |
Parse JSON formatted data in chunks.
More...
|
|
gos_json_tok_t * | gos_json_context_get_token ( gos_json_parse_context_t *context, const char *str_val, const gos_json_tok_t *offset_tok) |
Retrieve a token from the JSON context.
More...
|
|
gos_json_tok_t * | gos_json_context_get_value ( gos_json_parse_context_t *context, const char *str_key, const gos_json_tok_t *offset_tok) |
Return the value token for a specified key.
More...
|
|
gos_json_tok_t * | gos_json_context_get_value_with_limit ( gos_json_parse_context_t *context, const char *str_key, const gos_json_tok_t *offset_tok, uint32_t limit) |
This does the exact same as
gos_json_context_get_value()
but limits the number of tokens to search.
|
|
gos_json_tok_t * | gos_json_context_skip_tokens ( gos_json_parse_context_t *context, const gos_json_tok_t *current_tok, uint16_t count) |
Skip past specified number of tokens in context.
More...
|
|
gos_json_tok_t * | gos_json_context_get_current_parent ( gos_json_parse_context_t *context) |
Get the current parent Object or Array token.
More...
|
|
void | gos_json_encode_buffer ( gos_buffer_t *fragment) |
Delimit any JSON special characters in supplied buffer.
More...
|
|
gos_result_t | gos_json_decode_buffer ( gos_buffer_t *fragment) |
Decoding delimited JSON data to original representation.
More...
|
|
Detailed Description
JSON Utilities.
See JSON Website for more information.
- Note
- MessagePack is very similar to JSON but much more efficient for embedded devices.
Function Documentation
◆ gos_json_context_get_current_parent()
gos_json_tok_t * gos_json_context_get_current_parent | ( | gos_json_parse_context_t * |
context
|
) |
Get the current parent Object or Array token.
This returns the current parent Object or Array token.
- Parameters
-
context
Pointer to initialized context
- Returns
- pointer to parent token, NULL else
◆ gos_json_context_get_token()
gos_json_tok_t * gos_json_context_get_token | ( | gos_json_parse_context_t * |
context,
|
const char * |
str_val,
|
||
const gos_json_tok_t * |
offset_tok
|
||
) |
Retrieve a token from the JSON context.
After calling gos_json_parse_chunked() , the gos_json_parse_context_t may have one or more tokens. This retrieves a given token from the context.
If the 'str_val' parameter is specified then this finds the first string token with the given value. If the 'offset_tok' parameter is specified then it starts searching from 'offset_tok' token onward. If both parameters are NULL then return the head token. If the token isn't found or there are no tokens in the context then return NULL.
- Note
- This returns a 'token'. It has no concept of key/value. Refer to gos_json_context_get_value() if the value of a given key is required.
- Parameters
-
context
Initialized JSON context str_val
Optional string value to search for, leave NULL if unused offset_tok
Starting token to begin search, leave NULL if unused
- Returns
- pointer to found token, NULL else
◆ gos_json_context_get_value()
gos_json_tok_t * gos_json_context_get_value | ( | gos_json_parse_context_t * |
context,
|
const char * |
str_key,
|
||
const gos_json_tok_t * |
offset_tok
|
||
) |
Return the value token for a specified key.
After calling json_parse_chunked(), the gos_json_parse_context_t may have one or more tokens. This returns a corresponding value token for the specified key.
This searches linearly starting at the first token in the context (or 'offset_tok' if supplied) for the first GOS_JSON_TYPE_STRING token with its value equal to 'str_key'. It then returns the key token's value (i.e. the token following the found key token).
If the key token is not found or the context is empty then NULL is returned.
- Note
- 'offset_tok' must be either a GOS_JSON_TYPE_OBJECT or GOS_JSON_TYPE_ARRAY . If it's any other type, the API will automatically begin searching for a GOS_JSON_TYPE_OBJECT or GOS_JSON_TYPE_ARRAY starting at offset_tok.
- Parameters
-
context
Initialized JSON context str_key
String key value to search offset_tok
Starting token to begin search, leave NULL if unused
- Returns
- pointer to value of found key token, NULL else
- Examples:
- utility/json_parser/parse_example2.c .
◆ gos_json_context_skip_tokens()
gos_json_tok_t * gos_json_context_skip_tokens | ( | gos_json_parse_context_t * |
context,
|
const gos_json_tok_t * |
current_tok,
|
||
uint16_t |
count
|
||
) |
Skip past specified number of tokens in context.
After calling json_parse_chunked(), the gos_json_parse_context_t may have one or more tokens. This is a helper API for skipping past a specified number of tokens.
If current_tok is given as an argument, then this will return current_tok + count tokens. If current_tok is NOT given, then this will return the first token in the context + count tokens. If the count token is not available then this returns NULL.
- Parameters
-
context
Initialized JSON context current_tok
Optional token to begin from, begin from first token in context otherwise count
Number of tokens to skip
- Returns
- pointer to first token after skipped tokens, NULL if not available
◆ gos_json_decode_buffer()
gos_result_t gos_json_decode_buffer | ( | gos_buffer_t * |
fragment
|
) |
Decoding delimited JSON data to original representation.
The decoding is done in-place. The gos_buffer_t will be updated to reflect the new data size.
- Parameters
-
fragment
Buffer contain data to JSON decode
- Returns
- result of decoding
◆ gos_json_encode_buffer()
void gos_json_encode_buffer | ( | gos_buffer_t * |
fragment
|
) |
Delimit any JSON special characters in supplied buffer.
This backslash delimits any special JSON characters in the supplied buffer data in-place. The given buffer must be larger enough to hold the additional backslash characters (if necessary). The size of the gos_buffer_t will be updated to reflect the new data size.
- Parameters
-
fragment
Buffer hold data to JSON encode, buffer must be large enough to hold additional backslash characters
◆ gos_json_parse_chunked()
gos_result_t gos_json_parse_chunked | ( | gos_json_parse_context_t * |
context,
|
void * |
user
|
||
) |
Parse JSON formatted data in chunks.
This will parse JSON data and optionally allocate tokens. This may be called multiple times for a given set of JSON data.
Call json_parse_context_init() first to initialize a parsing context.
After parsing call json_context_get_token() to retrieve a token.
- Parameters
-
context
Previously initialize JSON context user
Optional user data to be passed to gos_json_parse_reader_t and gos_json_token_callback_t
- Returns
- gos_result_t result of api call
◆ gos_json_parse_context_deinit()
gos_result_t gos_json_parse_context_deinit | ( | gos_json_parse_context_t * |
context
|
) |
Cleanup JSON parser context.
This cleans up the allocated parsing context. This also de-allocates any allocated tokens from parsing.
- Parameters
-
context
JSON parsing context to de-initialize
- Returns
- gos_result_t result of api call
◆ gos_json_parse_context_init()
gos_result_t gos_json_parse_context_init | ( | gos_json_parse_context_t ** |
context_ptr,
|
const gos_json_parse_config_t * |
config
|
||
) |
Initialize JSON parsing context.
This allocates a JSON parsing context configured with the given configuration.
Call json_parse_context_deinit() to cleanup this context.
- Parameters
-
context_ptr
Pointer to hold pointer to allocated context config
Context configuration
- Returns
- gos_result_t result of api call