DragonFly On-Line Manual Pages
KCGIJSON(3) DragonFly Library Functions Manual KCGIJSON(3)
NAME
kcgijson, kjson_open, kjson_close, kjson_putbool, kjson_putboolp,
kjson_putint, kjson_putintp, kjson_putdouble, kjson_putdoublep,
kjson_putnull, kjson_putnullp, kjson_putstring, kjson_putstringp,
kjson_obj_open, kjson_objp_open, kjson_obj_close, kjson_array_open,
kjson_arrayp_open, kjson_array_close, kjson_string_open,
kjson_stringp_open, kjson_string_close, kjson_string_putdouble,
kjson_string_putint, kjson_string_puts, kjson_string_write - JSON
handling functions for kcgi
LIBRARY
library "libkcgijson"
SYNOPSIS
#include <stdint.h>
#include <kcgi.h>
#include <kcgijson.h>
void
kjson_open(struct kjsonreq *r, struct kreq *req);
int
kjson_close(struct kjsonreq *r);
int
kjson_putbool(struct kjsonreq *r, int val);
int
kjson_putboolp(struct kjsonreq *r, const char *key, int val);
int
kjson_putdouble(struct kjsonreq *r, double val);
int
kjson_putdoublep(struct kjsonreq *r, const char *key, double val);
int
kjson_putint(struct kjsonreq *r, int64_t val);
int
kjson_putintp(struct kjsonreq *r, const char *key, int64_t val);
int
kjson_putnull(struct kjsonreq *r);
int
kjson_putnullp(struct kjsonreq *r, const char *key);
int
kjson_putstring(struct kjsonreq *r, const char *val);
int
kjson_putstringp(struct kjsonreq *r, const char *key, const char *val);
int
kjson_obj_open(struct kjsonreq *r);
int
kjson_objp_open(struct kjsonreq *r, const char *key);
int
kjson_obj_close(struct kjsonreq *r);
int
kjson_array_open(struct kjsonreq *r);
int
kjson_arrayp_open(struct kjsonreq *r, const char *key);
int
kjson_array_close(struct kjsonreq *r);
int
kjson_string_open(struct kjsonreq *r);
int
kjson_stringp_open(struct kjsonreq *r, const char *key);
int
kjson_string_close(struct kjsonreq *r);
int
kjson_string_putint(struct kjsonreq *r, int64_t val);
int
kjson_string_puts(struct kjsonreq *r, const char *cp);
int
kjson_string_write(const char *cp, size_t sz, void *arg);
DESCRIPTION
The kcgijson functions extend kcgi(3) output with JSON objects and arrays
for contexts allocated with khttp_parse(3). None of these functions may
be called before khttp_body(3).
All kcgijson sequences begin and end with kjson_open and kjson_close,
respectively. These enclose a standalone-type array or object context,
kjson_array_open or kjson_obj_open, respectively, each with its own pair-
type or standalone-type children.
In general, kcgijson functions follow the convention of writing either
pair-type (ending in "p") or standalone-type data. Standalone values are
used in arrays; key-value pairs are used in objects. Passing a NULL
value as the key for any key-value pair function is the same as calling
the standalone version.
To use these functions, you must include the <kcgijson.h> header and
compile with library "kcgijson", for example,
% cc -I/usr/local/include -c -o sample.o sample.c
% cc -L/usr/local/lib -o sample -lkcgijson -lkcgi -lz
kjson_open()
Initialise a JSON context.
kjson_close()
Close a JSON context as opened with kjson_open(). This will also
close any open arrays, strings, or objects. You should not use
the object after invoking this function.
kjson_arrayp_open()
This and kjson_array_open() start an array context with or
without a name.
kjson_array_close()
Close an array context with or without a name.
kjson_string_open() This and kjson_stringp_open() start a string
context with or without a name. This is usually used for complex
values, or those create dynamically with khttp_template(3). The
kjson_string_putdouble(), kjson_string_putint(),
kjson_string_puts(), and kjson_string_write() functions may be
used for serialising value data.
kjson_string_close()
Close a string context with or without a name.
kjson_obj_open()
This and kjson_objp_open() start an object context with or
without a name.
kjson_obj_close()
Close an object context with or without a name.
kjson_putstringp()
This and kjson_putstring() emit a string value with or without a
name. Note that it is not checked for character encoding, only
character legality.
kjson_putboolp()
This and kjson_putbool() emit a Boolean value with or without a
name. In the usual way, 0 evalutes to FALSE, non-zero to TRUE.
kjson_putnullp()
This and kjson_putnull() emit a null value with or without a
name.
kjson_putintp()
This and kjson_putint() emit a 64-bit signed integer value with
or without a name.
kjson_putdoublep()
This and kjson_putdouble() emit a double-precision floating point
value with or without a name. This is formatted as with the %g
argument to printf(3).
RETURN VALUES
Functions returning an int indicate 0 on failure. This occurs if the
requested statement occurs out of context, for example, emitting a key-
value pair in an array context (or the root context), or emitting a
standalone value in an object. On failure, the request is ignored.
STANDARDS
The kcgijson functions conform to the ECMA-404 The JSON Data Interchange
Standard.
AUTHORS
The kcgijson library was written by Kristaps Dzonsons <kristaps@bsd.lv>.
DragonFly 6.5-DEVELOPMENT January 4, 2016 DragonFly 6.5-DEVELOPMENT