-
Notifications
You must be signed in to change notification settings - Fork 4
/
Readme
76 lines (54 loc) · 1.85 KB
/
Readme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
libjson
This is a C library for parsing the JSON[1] data format.
This parser doesn't do very much; it really only parses.
It doesn't do any converting or creating of higher-level
data structures for you.
It has no dependencies. It only defines one type and one
function. It does no allocation. Its source code is
about 250 lines.
# Building
To build and test, run make. You can run 'make install'
to copy json.h and libjson.a to the appropriate places
in /usr/local. Then you should be able to compile with
#include <json.h> and link with -ljson in your programs
that use it.
# Example
JSON val[100];
int n, i;
n = jsonparse(src, val, 100);
if (n < 1)
errx(1, "bad json");
if (n > 100)
errx(1, "too many values");
for (i=0; i<n; i++)
printf("%.*s;\n", val[i].len, val[i].src);
# Reference
int jsonparse(char *src, JSON *val, int nval);
Scan a JSON text in src and find the lexical bounds of
the values that appear. Writes at most nval entries into
array val. Values are written in the order they occur in
src, so the outermost object or array will be in val[0].
Returns the total number of values in src (regardless of
nval). If src is not well-formed JSON, returns 0.
typedef struct JSON JSON;
struct JSON {
char type; /* one of: { [ " 0 t f n */
int len;
char *src;
char *end; /* src + len */
JSON *parent;
JSON *next;
JSON *prev;
};
Represents a JSON value by pointing to the lexical
bounds of its occurrence in the JSON text.
The children of a JSON array form a linked list. The
first child of a JSON array at val[n] is at val[n+1],
and the second child is at val[n+1].next.
The keys and values of a JSON object form two linked
lists. The first key and val in object at val[n] are
at val[n+1] and val[n+2], and the second ones are at
val[n+1].next and val[n+2].next.
# Similar Work
http://zserge.bitbucket.org/jsmn.html
[1]: http://json.org