int json_scanf(const char *str, int str_len, const char *fmt, ...);
int json_vscanf(const char *str, int str_len, const char *fmt, va_list ap);
/* json_scanf's %M handler */
typedef void (*json_scanner_t)(const char *str, int len, void *user_data);
Scan JSON string str, performing scanf-like conversions according to fmt.
fmt uses scanf()-like format, with the following differences:
Order of keys in a format string does not matter, and format string may
omit keys to fetch only those that are of interest, for example,
assume str is a JSON string { "a": 123, "b": "hi", c: true }.
We can fetch only the value of the c key:
int value = 0;
json_scanf(str, strlen(str), "{c: %B}", &value);
Several extra format specifiers are supported:
%B: consumes int *, expects boolean true or false.%Q: consumes char **, expects quoted, JSON-encoded string. Scanned
string is malloc-ed, caller must free() the string. Scanned string
is a JSON decoded, unescaped UTF-8 string.%M: consumes custom scanning function pointer and
void *user_data parameter - see json_scanner_t definition.%T: consumes struct json_token *, fills it out with matched token.Return number of elements successfully scanned & converted. Negative number means scan error.
int json_scanf_array_elem(const char *s, int len,
const char *path,
int index,
struct json_token *token);
A helper function to scan array item with given path and index.
Fills token with the matched JSON token.
Return 0 if no array element found, otherwise non-0.