JSON parser.
Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries.
#include <stdint.h>
#include <stdlib.h>
Data Structures | |
struct | json_obj |
JSON data structure. More... | |
Macros | |
#define | JSON_MAX_NAME_SIZE 16 |
Max size of token name. More... | |
#define | JSON_MAX_TOKEN_SIZE 64 |
Max token size of JSON element. More... | |
Enumerations | |
enum | json_type { JSON_TYPE_NULL = 0, JSON_TYPE_OBJECT, JSON_TYPE_STRING, JSON_TYPE_BOOLEAN, JSON_TYPE_INTEGER, JSON_TYPE_REAL, JSON_TYPE_ARRAY, JSON_TYPE_MAX } |
JSON type. More... | |
Functions | |
int | json_create (struct json_obj *obj, const char *data, int data_len) |
Create the JSON data from the string buffer. More... | |
int | json_find (struct json_obj *obj, const char *name, struct json_obj *out) |
Find data from the JSON object. More... | |
int | json_get_child (struct json_obj *obj, int index, struct json_obj *out) |
Get child data in the JSON object. More... | |
int | json_get_child_count (struct json_obj *obj) |
Get child count in the JSON object. More... | |
#define JSON_MAX_NAME_SIZE 16 |
Max size of token name.
Referenced by _json_parse().
#define JSON_MAX_TOKEN_SIZE 64 |
Max token size of JSON element.
Token means that pair of key and value.
Referenced by _json_parse(), json_find(), and json_get_child().
enum json_type |
int json_create | ( | struct json_obj * | obj, |
const char * | data, | ||
int | data_len | ||
) |
Create the JSON data from the string buffer.
[out] | obj | Pointer of JSON token which will be stored json informations. |
[in] | data | JSON data represented as a string. |
[in] | data_len | JSON data length. |
References json_obj::end_ptr, JSON_TYPE_OBJECT, json_obj::name, NULL, json_obj::o, json_obj::type, and json_obj::value.
Referenced by http_client_callback().
Find data from the JSON object.
The input should be an object or array. This function supported colon separated search.
If JSON data is as follows {"obj1":{"data1":"value1","data2":"value2","obj2":{"data3":"value3"}}} You can be found value of data3 using the following name variable. "obj1:obj2:data3"
[in] | obj | Pointer of the parent JSON data. |
[in] | name | The name of the item you are looking for. |
[in] | out | Pointer of JSON token which will be stored child JSON informations. |
References _json_parse(), _json_read_token(), json_obj::end_ptr, JSON_CMD_ENTER_ARRAY, JSON_CMD_ENTER_OBJECT, JSON_CMD_EXIT_ARRAY, JSON_CMD_EXIT_OBJECT, JSON_CMD_NONE, JSON_MAX_TOKEN_SIZE, JSON_TYPE_ARRAY, JSON_TYPE_OBJECT, json_obj::name, NULL, json_obj::o, json_obj::type, and json_obj::value.
Referenced by http_client_callback().
Get child data in the JSON object.
The input should be an object or array.
[in] | obj | Pointer of the parent JSON data. |
[in] | index | Index which is located in the parent object. |
[in] | out | Pointer of JSON token which will be stored child JSON informations. |
References _json_parse(), _json_read_token(), json_obj::end_ptr, JSON_CMD_ENTER_ARRAY, JSON_CMD_ENTER_OBJECT, JSON_CMD_EXIT_ARRAY, JSON_CMD_EXIT_OBJECT, JSON_CMD_NONE, JSON_MAX_TOKEN_SIZE, JSON_TYPE_ARRAY, JSON_TYPE_OBJECT, NULL, json_obj::o, json_obj::type, and json_obj::value.
int json_get_child_count | ( | struct json_obj * | obj | ) |
Get child count in the JSON object.
The input should be an object or array.
[in] | obj | Pointer of the parent JSON data. |
References _json_read_token(), json_obj::end_ptr, JSON_CMD_ENTER_ARRAY, JSON_CMD_ENTER_OBJECT, JSON_CMD_EXIT_ARRAY, JSON_CMD_EXIT_OBJECT, JSON_CMD_NONE, JSON_TYPE_ARRAY, JSON_TYPE_OBJECT, NULL, json_obj::o, json_obj::type, and json_obj::value.