Files: e1e1c56a064cee691025d3117030ea74cc5e8354 / jsmn.h
1584 bytesRaw
1 | |
2 | |
3 | |
4 | /** |
5 | * JSON type identifier. Basic types are: |
6 | * o Object |
7 | * o Array |
8 | * o String |
9 | * o Other primitive: number, boolean (true/false) or null |
10 | */ |
11 | typedef enum { |
12 | JSMN_PRIMITIVE = 0, |
13 | JSMN_OBJECT = 1, |
14 | JSMN_ARRAY = 2, |
15 | JSMN_STRING = 3 |
16 | } jsmntype_t; |
17 | |
18 | typedef enum { |
19 | /* Not enough tokens were provided */ |
20 | JSMN_ERROR_NOMEM = -1, |
21 | /* Invalid character inside JSON string */ |
22 | JSMN_ERROR_INVAL = -2, |
23 | /* The string is not a full JSON packet, more bytes expected */ |
24 | JSMN_ERROR_PART = -3, |
25 | /* Everything was fine */ |
26 | JSMN_SUCCESS = 0 |
27 | } jsmnerr_t; |
28 | |
29 | /** |
30 | * JSON token description. |
31 | * @param type type (object, array, string etc.) |
32 | * @param start start position in JSON data string |
33 | * @param end end position in JSON data string |
34 | */ |
35 | typedef struct { |
36 | jsmntype_t type; |
37 | int start; |
38 | int end; |
39 | int size; |
40 | |
41 | int parent; |
42 | |
43 | } jsmntok_t; |
44 | |
45 | /** |
46 | * JSON parser. Contains an array of token blocks available. Also stores |
47 | * the string being parsed now and current position in that string |
48 | */ |
49 | typedef struct { |
50 | unsigned int pos; /* offset in the JSON string */ |
51 | int toknext; /* next token to allocate */ |
52 | int toksuper; /* superior token node, e.g parent object or array */ |
53 | } jsmn_parser; |
54 | |
55 | /** |
56 | * Create JSON parser over an array of tokens |
57 | */ |
58 | void jsmn_init(jsmn_parser *parser); |
59 | |
60 | /** |
61 | * Run JSON parser. It parses a JSON data string into and array of tokens, each describing |
62 | * a single JSON object. |
63 | */ |
64 | jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, |
65 | jsmntok_t *tokens, unsigned int num_tokens); |
66 | |
67 | |
68 |
Built with git-ssb-web