acl
3.5.3.0
|
#include <json.hpp>
Public 成员函数 | |
json (const char *data=NULL, dbuf_guard *dbuf=NULL) | |
json (const json_node &node, dbuf_guard *dbuf=NULL) | |
~json (void) | |
json & | part_word (bool on) |
const char * | update (const char *data) |
bool | finish (void) |
void | reset (void) |
json_node * | getFirstElementByTagName (const char *tag) const |
json_node * | operator[] (const char *tag) const |
const std::vector< json_node * > & | getElementsByTagName (const char *tag) const |
const std::vector< json_node * > & | getElementsByTags (const char *tags) const |
json_node * | getFirstElementByTags (const char *tags) const |
ACL_JSON * | get_json (void) const |
json_node & | create_node (const char *tag, const char *value) |
json_node & | create_node (const char *tag, long long int value) |
json_node & | create_double (const char *tag, double value) |
json_node & | create_node (const char *tag, bool value) |
json_node & | create_null (const char *tag) |
json_node & | create_array_text (const char *text) |
json_node & | create_array_number (long long int value) |
json_node & | create_array_double (double value) |
json_node & | create_array_bool (bool value) |
json_node & | create_array_null (void) |
json_node & | create_node (bool as_array=false) |
json_node & | create_array (void) |
json_node & | create_node (const char *tag, json_node *node) |
json_node & | create_node (const char *tag, json_node &node) |
json_node & | duplicate_node (const json_node *node) |
json_node & | duplicate_node (const json_node &node) |
json_node & | get_root (void) |
json_node * | first_node (void) |
json_node * | next_node (void) |
void | build_json (string &out, bool add_space=false) const |
const string & | to_string (string *out=NULL, bool add_space=false) const |
dbuf_guard * | get_dbuf (void) const |
virtual int | push_pop (const char *in, size_t len, string *out, size_t max=0) |
virtual int | pop_end (string *out, size_t max=0) |
virtual void | clear (void) |
Public 成员函数 继承自 acl::pipe_stream | |
pipe_stream () | |
virtual | ~pipe_stream () |
Public 成员函数 继承自 acl::dbuf_obj | |
dbuf_obj (dbuf_guard *guard=NULL) | |
virtual | ~dbuf_obj () |
int | pos () const |
dbuf_guard * | get_guard () const |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
acl::json::json | ( | const char * | data = NULL , |
dbuf_guard * | dbuf = NULL |
||
) |
构造函数,可用于解析 json 字符串或生成 json 对象
data | {const char*} json 格式的字符串,可以是完整的 json 字符串,也可以是部分的 json 字符串,也可以是空指针, 无论如何,用户依然可以用部分或完整的 json 字符串调用 update 函数,在调用 update 过程中解析 json;其实,当构造函数的 的 data 参数非空时,它也会调用 update |
dbuf | {dbuf_guard*} 非空时将做为内存池管理对象,否则内部 会自动创建一个内存池管理对象 |
acl::json::json | ( | const json_node & | node, |
dbuf_guard * | dbuf = NULL |
||
) |
根据一个 json 对象中的一个 json 节点构造一个新的 json 对象
node | {const json_node&} 源 json 对象中的一个 json 节点 |
dbuf | {dbuf_guard*} 非空时将做为内存池管理对象,否则内部 会自动创建一个内存池管理对象 |
acl::json::~json | ( | void | ) |
void acl::json::build_json | ( | string & | out, |
bool | add_space = false |
||
) | const |
将 json 对象树转成字符串
out | {string&} 存储转换结果的缓冲区 |
add_space | {bool} 创建 json 时是否自动在分隔符两边添加空格 |
|
virtual |
重载 acl::pipe_stream .
json_node& acl::json::create_array | ( | void | ) |
json_node& acl::json::create_array_bool | ( | bool | value | ) |
json_node& acl::json::create_array_double | ( | double | value | ) |
json_node& acl::json::create_array_null | ( | void | ) |
json_node& acl::json::create_array_number | ( | long long int | value | ) |
json_node& acl::json::create_array_text | ( | const char * | text | ) |
json_node& acl::json::create_double | ( | const char * | tag, |
double | value | ||
) |
json_node& acl::json::create_node | ( | const char * | tag, |
const char * | value | ||
) |
json_node& acl::json::create_node | ( | const char * | tag, |
long long int | value | ||
) |
json_node& acl::json::create_node | ( | const char * | tag, |
bool | value | ||
) |
json_node& acl::json::create_node | ( | bool | as_array = false | ) |
json_node& acl::json::create_null | ( | const char * | tag | ) |
将一个 json 对象中的一个 json 节点复制至任一 json 对象中的一个 新 json 节点中并返回该新的 json 节点
node | {json_node*} 源 json 对象的一个 json 节点 |
bool acl::json::finish | ( | void | ) |
json_node* acl::json::first_node | ( | void | ) |
开始遍历该 json 对象并获得第一个节点
|
inline |
ACL_JSON* acl::json::get_json | ( | void | ) | const |
取得 acl 库中的 ACL_JSON 对象
json_node& acl::json::get_root | ( | void | ) |
const std::vector<json_node*>& acl::json::getElementsByTagName | ( | const char * | tag | ) | const |
从 json 对象中取得某个标签名的所有节点集合
tag | {const char*} 标签名(不区分大小写) |
const std::vector<json_node*>& acl::json::getElementsByTags | ( | const char * | tags | ) | const |
从 json 对象中获得所有的与给定多级标签名相同的 json 节点的集合
tags | {const char*} 多级标签名,由 '/' 分隔各级标签名, 如针对 json 数据: { 'root': [ 'first': { 'second': { 'third': 'test1' } }, 'first': { 'second': { 'third': 'test2' } }, 'first': { 'second': { 'third': 'test3' } } ] } 可以通过多级标签名:root/first/second/third 一次性查出所有符合 条件的节点 |
json_node* acl::json::getFirstElementByTagName | ( | const char * | tag | ) | const |
从 json 对象中取得某个标签名的第一个节点
tag | {const char*} 标签名(不区分大小写) |
json_node* acl::json::getFirstElementByTags | ( | const char * | tags | ) | const |
从 json 对象中获得所有的与给定多级标签名相同的 json 节点的集合
tags | {const char*} 多级标签名,由 '/' 分隔各级标签名, 如针对 json 数据: { 'root': [ 'first': { 'second': { 'third': 'test1' } }, 'first': { 'second': { 'third': 'test2' } }, 'first': { 'second': { 'third': 'test3' } } ] } 可以通过多级标签名:root/first/second/third 一次性查出所有符合 条件的节点 |
json_node* acl::json::next_node | ( | void | ) |
遍历该 json 对象的下一个 json 节点
json_node* acl::json::operator[] | ( | const char * | tag | ) | const |
重载运算符,直接获得对应标签名的第一个节点
tag | {const char*} 标签名(不区分大小写) |
json& acl::json::part_word | ( | bool | on | ) |
设置是否在解析时自动处理半个汉字的情形
on | {bool} |
|
virtual |
实现了 acl::pipe_stream.
|
virtual |
实现了 acl::pipe_stream.
void acl::json::reset | ( | void | ) |
重置 json 解析器状态,该 json 对象可以用来对多个 json 数据 进行解析,在反复使用本 json 解析器前,需要调用本函数重置 内部 json 解析器状态,清除上一次的解析结果
将 json 对象树转换成 json 字符串
out | {string*} 非空时,则使用此缓冲区,否则使用内部缓冲区 |
add_space | {bool} 创建 json 时是否自动在分隔符两边添加空格 |
被这些函数引用 acl::deserialize().
const char* acl::json::update | ( | const char * | data | ) |
以流式方式循环调用本函数添加 json 数据,也可以一次性添加 完整的 json 数据,如果是重复使用该 json 解析器解析多个 json 对象,则应该在解析下一个 json 对象前调用 reset() 方法来清 除上一次的解析结果
data | {const char*} json 数据 |