| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #ifndef __JSMN_H_
- #define __JSMN_H_
- #include <stddef.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * JSON type identifier. Basic types are:
- * o Object
- * o Array
- * o String
- * o Other primitive: number, boolean (true/false) or null
- */
- typedef enum {
- JSMN_UNDEFINED = 0,
- JSMN_OBJECT = 1,
- JSMN_ARRAY = 2,
- JSMN_STRING = 3,
- JSMN_PRIMITIVE = 4
- } jsmntype_t;
- enum jsmnerr {
- /* Not enough tokens were provided */
- JSMN_ERROR_NOMEM = -1,
- /* Invalid character inside JSON string */
- JSMN_ERROR_INVAL = -2,
- /* The string is not a full JSON packet, more bytes expected */
- JSMN_ERROR_PART = -3
- };
- /**
- * JSON token description.
- * @param type type (object, array, string etc.)
- * @param start start position in JSON data string
- * @param end end position in JSON data string
- */
- typedef struct {
- jsmntype_t type;
- int start;
- int end;
- int size;
- #ifdef JSMN_PARENT_LINKS
- int parent;
- #endif
- } jsmntok_t;
- /**
- * JSON parser. Contains an array of token blocks available. Also stores
- * the string being parsed now and current position in that string
- */
- typedef struct {
- unsigned int pos; /* offset in the JSON string */
- unsigned int toknext; /* next token to allocate */
- int toksuper; /* superior token node, e.g parent object or array */
- } jsmn_parser;
- /**
- * Create JSON parser over an array of tokens
- */
- void jsmn_init(jsmn_parser *parser);
- /**
- * Compare a token string with a token, returns the token value
- */
- int jsoneq(const char *json, jsmntok_t *tok, const char *s);
- /**
- * Get the value of the token in a integer format.
- */
- int getIntegerToken(const char *json, jsmntok_t *tok);
- /**
- * Get the value of the token in a string format.
- */
- void getStringToken(const char *json, jsmntok_t *tok, char* res, char maxlength);
- /**
- * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
- * a single JSON object.
- */
- int jsmn_parse(jsmn_parser *parser, const char *js, size_t len,
- jsmntok_t *tokens, unsigned int num_tokens);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __JSMN_H_ */
|