plan9fox/sys/man/2/json
2017-12-11 19:58:06 -05:00

128 lines
2.1 KiB
Plaintext

.TH JSON 2
.SH NAME
jsonparse,
jsonfree,
jsonbyname,
jsonstr
\- JSON parser
.SH SYNOPSIS
.\" .ta 0.75i 1.5i 2.25i 3i 3.75i 4.5i
.ta 0.7i +0.7i +0.7i +0.7i +0.7i +0.7i +0.7i
.EX
#include <u.h>
#include <libc.h>
#include <json.h>
enum {
JSONNull,
JSONBool,
JSONNumber,
JSONString,
JSONArray,
JSONObject,
};
typedef struct JSONEl JSONEl;
struct JSONEl {
char *name;
JSON *val;
JSONEl *next;
};
typedef struct JSON JSON;
struct JSON
{
int t;
union {
double n;
char *s;
JSONEl *first;
};
};
JSON* jsonparse(char *s);
void jsonfree(JSON *j);
JSON* jsonbyname(JSON *j, char *s);
char* jsonstr(JSON *j);
int JSONfmt(Fmt *f)
void JSONfmtinstall(void);
.EE
.SH DESCRIPTION
The
.B JSON
structure represents a variant json value. The variant type
is stored in the
.I t
member of the structure. String values use
.BR s ,
booleans and numbers use the
.B n
members in the structure.
Arrays and objects (dictionaries) are represented by
a singly-linked list of
.B JSONEl
structures referred to from the
.B first
pointer in the
.B JSON
structure.
Each
.B JSONEl
has a
.B val
pointer to the associated value and a
.B next
pointer to the next element in the array or object.
Dictionary objects have the
.B name
member set to the key of the association.
.P
A json object is parsed by calling
.I jsonparse
with a
.B UTF-8
string of the json encoded data. On success, a non-nil pointer to a
newly allocated
.B JSON
structure is returned.
To free the parsed objects,
.I jsonfree
has to be called.
.P
The
.I jsonbyname
function returns the associated value of a dictionary item.
.P
The function
.I jsonstr
returns the string value of a json object or
.B nil
for any other object type.
.P
.I JSONfmt
is a
.IR print (2)
formatting routine that prints a well-formatted JSON structure.
It can be installed by hand but
.I JSONfmtinstall
installs it under the standard format character J. The header
.B <json.h>
contains a #pragma statement so the compiler can
type-check uses of
.B %J
in
.IR print (2)
format strings.
.SH SOURCE
.B /sys/src/libjson
.SH DIAGNOSTICS
The functions
.I jsonparse,
.I jsonbyname
and
.I jsonstr
return
.B nil
on error and set an error string (see
.IR errstr (2)).