JSON Decoder aims to:
Be highly optimized for constrained embedded systems
Work on both PIC18 and AVR
#define TEST_JSON "{\"main\":{\"key\" : 10,\"foo\":\"bar\"}, \"alt\":2}"
...
jsonNode_t *root, *objmain;
char foo[10], str[50];
int alt;
memcpy(str, TEST_JSON, sizeof(TEST_JSON));
JSON_DECODER_fromString(str)
JSON_DECODER_getRoot(&root);
JSON_DECODER_getObject(root, "main", &objmain);
JSON_DECODER_getNumber(root, "alt", &alt)
JSON_DECODER_getString(objmain, "foo", strlen(foo), foo)
jsonDecoderStatus_t JSON_DECODER_fromString(char *str)
Parses a JSON string into a C representation. It supports string, number and object values.
Name
Type
Description
str
IN
A string representation of a JSON object. After parsing, the string will have been altered.
Name
Description
JSON_DECODER_OK
Decoding was successful
JSON_DECODER_BAD_FORMAT
The input is invalid.
JSON_DECODER_getRoot(jsonNode_t **pNode)
The outermost object in a JSON is called the root.
This function must not be called before JSON_DECODER_fromString.
Name
Type
Description
pNode
OUT
Pointer to the root. When the function is called this parameter does not need to point to a valid jsonNode_t
address.
Name
Description
JSON_DECODER_OK
pNode now points to the root
jsonDecoderStatus_t JSON_DECODER_getObject(jsonNode_t *current, char *key, jsonNode_t **pNode)
Finds a JSON object by key in another JOSN object.
This function must not be called before JSON_DECODER_fromString.
Name
Type
Description
current
IN
The JSON object to search into
key
IN
The key of the object to find
pNode
OUT
Pointer to the object, if found. When the function is called this parameter does not need to point to a valid jsonNode_t
address.
Name
Description
JSON_DECODER_OK
Object was found and pNode now points to in
JSON_DECODER_KEY_NOT_FOUND
The specified key does not exist
jsonDecoderStatus_t JSON_DECODER_getString(jsonNode_t *current, char *key, uint8_t size, char *pVal)
Finds a string by key in a JOSN object.
This function must not be called before JSON_DECODER_fromString.
Name
Type
Description
current
IN
The JSON object to search into
key
IN
The key of the string to find
size
IN
Maximum size of the string. Should not be bigger than the length of the pVal buffer
pVal
OUT
Pointer to the string, if found
Name
Description
JSON_DECODER_OK
String was found and pVal now points to in
JSON_DECODER_KEY_NOT_FOUND
The specified key does not exist
jsonDecoderStatus_t JSON_DECODER_getNumber(jsonNode_t *current, char *key, int *pVal)
Finds a number by key in a JSON object.
This function must not be called before JSON_DECODER_fromString.
Name
Type
Description
current
IN
The JSON object to search into
key
IN
The key of the string to find
pVal
OUT
Pointer to the number, if found
Name
Description
JSON_DECODER_OK
Number was found and pVal now points to in
JSON_DECODER_KEY_NOT_FOUND
The specified key does not exist