json lib

Dependents:   grove_stream_jpa_sd2 grove_stream_jpa_sd2 grove_stream_jpa_sd2-2 grove_stream_jpa_sd2-3 ... more

Committer:
mercurywaters
Date:
Thu Jun 02 06:08:24 2016 +0000
Revision:
3:fab591fca1e7
Child:
5:dd98cf00ed9b
Added the documentation of JSON class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mercurywaters 3:fab591fca1e7 1 #ifndef __JSMN_H_
mercurywaters 3:fab591fca1e7 2 #define __JSMN_H_
mercurywaters 3:fab591fca1e7 3
mercurywaters 3:fab591fca1e7 4 #include <stddef.h>
mercurywaters 3:fab591fca1e7 5
mercurywaters 3:fab591fca1e7 6 #ifdef __cplusplus
mercurywaters 3:fab591fca1e7 7 extern "C"
mercurywaters 3:fab591fca1e7 8 {
mercurywaters 3:fab591fca1e7 9 #endif
mercurywaters 3:fab591fca1e7 10 /*
mercurywaters 3:fab591fca1e7 11 Modified version of standard jsmn lib ... added a type "JSMN_KEY" and enabled
mercurywaters 3:fab591fca1e7 12 parent-pointers and strict JSON check.
mercurywaters 3:fab591fca1e7 13 */
mercurywaters 3:fab591fca1e7 14 /**
mercurywaters 3:fab591fca1e7 15 * JSON type identifier. Basic types are:
mercurywaters 3:fab591fca1e7 16 * o Object
mercurywaters 3:fab591fca1e7 17 * o Array
mercurywaters 3:fab591fca1e7 18 * o String
mercurywaters 3:fab591fca1e7 19 * o Other primitive: number, boolean (true/false) or null
mercurywaters 3:fab591fca1e7 20 */
mercurywaters 3:fab591fca1e7 21 typedef enum
mercurywaters 3:fab591fca1e7 22 {
mercurywaters 3:fab591fca1e7 23 JSMN_UNDEFINED = 0,
mercurywaters 3:fab591fca1e7 24 JSMN_OBJECT = 1,
mercurywaters 3:fab591fca1e7 25 JSMN_ARRAY = 2,
mercurywaters 3:fab591fca1e7 26 JSMN_STRING = 3,
mercurywaters 3:fab591fca1e7 27 JSMN_PRIMITIVE = 4,
mercurywaters 3:fab591fca1e7 28 JSMN_KEY = 5
mercurywaters 3:fab591fca1e7 29 } jsmntype_t;
mercurywaters 3:fab591fca1e7 30
mercurywaters 3:fab591fca1e7 31 enum jsmnerr
mercurywaters 3:fab591fca1e7 32 {
mercurywaters 3:fab591fca1e7 33 /* Not enough tokens were provided */
mercurywaters 3:fab591fca1e7 34 JSMN_ERROR_NOMEM = -1,
mercurywaters 3:fab591fca1e7 35 /* Invalid character inside JSON string */
mercurywaters 3:fab591fca1e7 36 JSMN_ERROR_INVAL = -2,
mercurywaters 3:fab591fca1e7 37 /* The string is not a full JSON packet, more bytes expected */
mercurywaters 3:fab591fca1e7 38 JSMN_ERROR_PART = -3
mercurywaters 3:fab591fca1e7 39 };
mercurywaters 3:fab591fca1e7 40
mercurywaters 3:fab591fca1e7 41 /**
mercurywaters 3:fab591fca1e7 42 * JSON token description.
mercurywaters 3:fab591fca1e7 43 * @param type type (object, array, string etc.)
mercurywaters 3:fab591fca1e7 44 * @param start start position in JSON data string
mercurywaters 3:fab591fca1e7 45 * @param end end position in JSON data string
mercurywaters 3:fab591fca1e7 46 */
mercurywaters 3:fab591fca1e7 47 typedef struct
mercurywaters 3:fab591fca1e7 48 {
mercurywaters 3:fab591fca1e7 49 jsmntype_t type;
mercurywaters 3:fab591fca1e7 50 int start;
mercurywaters 3:fab591fca1e7 51 int end;
mercurywaters 3:fab591fca1e7 52 int parent;
mercurywaters 3:fab591fca1e7 53 int childCount;
mercurywaters 3:fab591fca1e7 54 } jsmntok_t;
mercurywaters 3:fab591fca1e7 55
mercurywaters 3:fab591fca1e7 56 /**
mercurywaters 3:fab591fca1e7 57 * JSON parser. Contains an array of token blocks available. Also stores
mercurywaters 3:fab591fca1e7 58 * the string being parsed now and current position in that string
mercurywaters 3:fab591fca1e7 59 */
mercurywaters 3:fab591fca1e7 60 typedef struct
mercurywaters 3:fab591fca1e7 61 {
mercurywaters 3:fab591fca1e7 62 unsigned int pos; /* offset in the JSON string */
mercurywaters 3:fab591fca1e7 63 unsigned int toknext; /* next token to allocate */
mercurywaters 3:fab591fca1e7 64 int toksuper; /* superior token node, e.g parent object or array */
mercurywaters 3:fab591fca1e7 65 } jsmn_parser;
mercurywaters 3:fab591fca1e7 66
mercurywaters 3:fab591fca1e7 67 /**
mercurywaters 3:fab591fca1e7 68 * Create JSON parser over an array of tokens
mercurywaters 3:fab591fca1e7 69 */
mercurywaters 3:fab591fca1e7 70 void jsmn_init ( jsmn_parser *parser );
mercurywaters 3:fab591fca1e7 71
mercurywaters 3:fab591fca1e7 72 /**
mercurywaters 3:fab591fca1e7 73 * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
mercurywaters 3:fab591fca1e7 74 * a single JSON object.
mercurywaters 3:fab591fca1e7 75 */
mercurywaters 3:fab591fca1e7 76 int jsmn_parse ( jsmn_parser *parser, const char *js, size_t len, jsmntok_t *tokens, unsigned int num_tokens );
mercurywaters 3:fab591fca1e7 77
mercurywaters 3:fab591fca1e7 78 #ifdef __cplusplus
mercurywaters 3:fab591fca1e7 79 }
mercurywaters 3:fab591fca1e7 80 #endif
mercurywaters 3:fab591fca1e7 81
mercurywaters 3:fab591fca1e7 82 #endif /* __JSMN_H_ */
mercurywaters 3:fab591fca1e7 83