YAZ
5.34.0
|
Header for JSON functions. More...
#include <yaz/wrbuf.h>
Go to the source code of this file.
Data Structures | |
struct | json_node |
JSON node. More... | |
Typedefs | |
typedef struct json_parser_s * | json_parser_t |
JSON parser (opaque) More... | |
Enumerations | |
enum | json_node_type { json_node_object , json_node_array , json_node_list , json_node_pair , json_node_string , json_node_number , json_node_true , json_node_false , json_node_null } |
JSON node type for json_node. More... | |
Functions | |
json_parser_t | json_parser_create (void) |
create JSON parser More... | |
void | json_parser_destroy (json_parser_t p) |
destroys JSON parser More... | |
struct json_node * | json_parser_parse (json_parser_t p, const char *json_str) |
parses JSON string More... | |
const char * | json_parser_get_errmsg (json_parser_t p) |
returns parser error More... | |
size_t | json_parser_get_position (json_parser_t p) |
returns parser position More... | |
struct json_node * | json_parse (const char *json_str, const char **errmsg) |
parses JSON string More... | |
struct json_node * | json_parse2 (const char *json_str, const char **errmsg, size_t *pos) |
parses JSON string More... | |
void | json_remove_node (struct json_node *n) |
destroys JSON tree node and its children More... | |
struct json_node * | json_get_object (struct json_node *n, const char *name) |
gets object pair value for some name More... | |
struct json_node * | json_detach_object (struct json_node *n, const char *name) |
gets object value and detaches from existing tree More... | |
struct json_node * | json_get_elem (struct json_node *n, int idx) |
gets array element More... | |
int | json_count_children (struct json_node *n) |
returns number of children (array or object) More... | |
int | json_append_array (struct json_node *dst, struct json_node *src) |
appends array to another More... | |
void | json_parser_subst (json_parser_t p, int idx, struct json_node *n) |
configure subst rule More... | |
void | json_write_wrbuf (struct json_node *node, WRBUF result) |
converts JSON tree to JSON string More... | |
void | json_write_wrbuf_pretty (struct json_node *node, WRBUF result) |
writes JSON tree with indentation (pretty print) More... | |
Header for JSON functions.
Definition in file json.h.
typedef struct json_parser_s* json_parser_t |
enum json_node_type |
JSON node type for json_node.
appends array to another
dst | original array and resulting array |
src | array to be appended to dst |
-1 | not arrays |
0 | array appended OK |
Definition at line 725 of file json.c.
References json_node_array, json_remove_node(), json_node::link, json_node::type, and json_node::u.
int json_count_children | ( | struct json_node * | n | ) |
returns number of children (array or object)
n | JSON node (presumably array node or object node) |
Definition at line 713 of file json.c.
References json_node_array, json_node_object, json_node::link, json_node::type, and json_node::u.
gets object value and detaches from existing tree
n | JSON node (presumably object node) |
name | name to match |
Definition at line 687 of file json.c.
References json_get_objectp(), and name.
gets array element
n | JSON node (presumably array node) |
idx | (0=first, 1=second, ..) |
Definition at line 700 of file json.c.
References json_node_array, json_node::link, json_node::type, and json_node::u.
gets object pair value for some name
n | JSON node (presumably object node) |
name | name to match |
Definition at line 678 of file json.c.
References json_get_objectp(), and name.
struct json_node* json_parse | ( | const char * | json_str, |
const char ** | errmsg | ||
) |
parses JSON string
json_str | JSON string |
errmsg | pointer to error message string |
The resulting tree should be removed with a call to json_remove_node. The errmsg may be NULL in which case the error message is not returned.
Definition at line 553 of file json.c.
References json_parse2().
struct json_node* json_parse2 | ( | const char * | json_str, |
const char ** | errmsg, | ||
size_t * | pos | ||
) |
parses JSON string
json_str | JSON string |
errmsg | pointer to error message string |
pos | position of parser stop (probably error) |
The resulting tree should be removed with a call to json_remove_node. The errmsg may be NULL in which case the error message is not returned.
Definition at line 531 of file json.c.
References json_parser_create(), json_parser_destroy(), json_parser_get_errmsg(), json_parser_get_position(), and json_parser_parse().
Referenced by json_parse().
json_parser_t json_parser_create | ( | void | ) |
create JSON parser
Definition at line 38 of file json.c.
References json_parser_s::buf, json_parser_s::cp, json_parser_s::subst, and xmalloc.
Referenced by json_parse2().
void json_parser_destroy | ( | json_parser_t | p | ) |
destroys JSON parser
p | JSON parser handle |
Definition at line 63 of file json.c.
References json_subst_info::next, json_parser_s::subst, and xfree.
Referenced by json_parse2().
const char* json_parser_get_errmsg | ( | json_parser_t | p | ) |
returns parser error
p | JSON parser handle |
This function should be called if json_parser_parse returns NULL .
Definition at line 741 of file json.c.
References json_parser_s::err_msg.
Referenced by json_parse2().
size_t json_parser_get_position | ( | json_parser_t | p | ) |
returns parser position
p | JSON parser handle |
This function should be called if json_parser_parse returns NULL .
Definition at line 746 of file json.c.
References json_parser_s::buf, and json_parser_s::cp.
Referenced by json_parse2().
struct json_node* json_parser_parse | ( | json_parser_t | p, |
const char * | json_str | ||
) |
parses JSON string
p | JSON parser handle |
json_str | JSON string |
The resulting tree should be removed with a call to json_remove_node.
Definition at line 503 of file json.c.
References json_parser_s::buf, json_parser_s::cp, json_parser_s::err_msg, json_parse_value(), json_remove_node(), look_ch(), json_parser_s::max_level, and json_parser_s::parse_level.
Referenced by json_parse2().
void json_parser_subst | ( | json_parser_t | p, |
int | idx, | ||
struct json_node * | n | ||
) |
configure subst rule
p | JSON parser |
idx | (id) |
n | node to be substituted for idx (idx) |
Definition at line 48 of file json.c.
References json_subst_info::idx, json_subst_info::next, json_subst_info::node, json_parser_s::subst, and xmalloc.
void json_remove_node | ( | struct json_node * | n | ) |
destroys JSON tree node and its children
n | JSON node |
Definition at line 96 of file json.c.
References json_node_array, json_node_false, json_node_list, json_node_null, json_node_number, json_node_object, json_node_pair, json_node_string, json_node_true, json_node::link, json_node::string, json_node::type, json_node::u, and xfree.
Referenced by json_append_array(), json_parse_array(), json_parse_elements(), json_parse_members(), json_parse_object(), json_parse_pair(), and json_parser_parse().
converts JSON tree to JSON string
node | JSON tree |
result | resulting JSON string buffer |
Definition at line 656 of file json.c.
References json_write_wrbuf_r(), and node().