acl  3.5.3.0
acl::json_node类 参考

#include <json.hpp>

+ 类 acl::json_node 继承关系图:
+ acl::json_node 的协作图:

Public 成员函数

const char * tag_name (void) const
 
const char * get_text (void) const
 
json_nodeget_obj (void) const
 
const char * get_string (void) const
 
const long long int * get_int64 (void) const
 
const double * get_double (void) const
 
const bool * get_bool (void) const
 
bool is_string (void) const
 
bool is_number (void) const
 
bool is_double (void) const
 
bool is_bool (void) const
 
bool is_null (void) const
 
bool is_object (void) const
 
bool is_array (void) const
 
const char * get_type (void) const
 
bool set_tag (const char *name)
 
bool set_text (const char *text)
 
const stringto_string (string *out=NULL) const
 
json_nodeadd_child (json_node *child, bool return_child=false)
 
json_nodeadd_child (json_node &child, bool return_child=false)
 
json_nodeadd_child (bool as_array=false, bool return_child=false)
 
json_nodeadd_array (bool return_child=false)
 
json_nodeadd_child (const char *tag, bool return_child=false)
 
json_nodeadd_child (const char *tag, json_node *node, bool return_child=false)
 
json_nodeadd_child (const char *tag, json_node &node, bool return_child=false)
 
json_nodeadd_text (const char *tag, const char *value, bool return_child=false)
 
json_nodeadd_number (const char *tag, long long int value, bool return_child=false)
 
json_nodeadd_double (const char *tag, double value, bool return_child=false)
 
json_nodeadd_bool (const char *tag, bool value, bool return_child=false)
 
json_nodeadd_null (const char *tag, bool return_child=false)
 
json_nodeadd_array_text (const char *text, bool return_child=false)
 
json_nodeadd_array_number (long long int value, bool return_child=false)
 
json_nodeadd_array_double (double value, bool return_child=false)
 
json_nodeadd_array_bool (bool value, bool return_child=false)
 
json_nodeadd_array_null (bool return_child=false)
 
json_nodeget_parent (void) const
 
json_nodefirst_child (void)
 
json_nodenext_child (void)
 
json_nodeoperator[] (const char *tag)
 
int depth (void) const
 
int children_count (void) const
 
int detach (void)
 
void clear (void)
 
jsonget_json (void) const
 
ACL_JSON_NODEget_json_node (void) const
 
- Public 成员函数 继承自 acl::dbuf_obj
 dbuf_obj (dbuf_guard *guard=NULL)
 
virtual ~dbuf_obj ()
 
int pos () const
 
dbuf_guardget_guard () const
 

友元

class json
 
class dbuf_guard
 

详细描述

json 节点,该类对象必须以 json.create_node() 方式创建

在文件 json.hpp27 行定义.

成员函数说明

◆ add_array()

json_node& acl::json_node::add_array ( bool  return_child = false)

◆ add_array_bool()

json_node& acl::json_node::add_array_bool ( bool  value,
bool  return_child = false 
)

创建一个 json 布尔对象,并将之添加为本 json 节点的子节点

参数
value{bool} 布尔值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_array_double()

json_node& acl::json_node::add_array_double ( double  value,
bool  return_child = false 
)

创建一个 json double 对象,并将之添加为本 json 节点的子节点

参数
value{double} 值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_array_null()

json_node& acl::json_node::add_array_null ( bool  return_child = false)

创建一个 json null 对象,并将之添加为本 json 节点的子节点

参数
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_array_number()

json_node& acl::json_node::add_array_number ( long long int  value,
bool  return_child = false 
)

创建一个 json 数字对象,并将之添加为本 json 节点的子节点

参数
value{acl_int64} 数字值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_array_text()

json_node& acl::json_node::add_array_text ( const char *  text,
bool  return_child = false 
)

创建一个 json 字符串对象,并将之添加为本 json 节点的子节点

参数
text{const char*} 文本字符串
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_bool()

json_node& acl::json_node::add_bool ( const char *  tag,
bool  value,
bool  return_child = false 
)

创建一个布尔类型的 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
value{bool} 标签值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_child() [1/6]

json_node& acl::json_node::add_child ( json_node child,
bool  return_child = false 
)

给本 json 节点添加 json_node 子节点对象

参数
child{json_node*} 子节点对象
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时返回子节点的引用, 否则返回本 json 节点对象的引用

◆ add_child() [2/6]

json_node& acl::json_node::add_child ( json_node child,
bool  return_child = false 
)

给本 json 节点添加 json_node 子节点对象

参数
child{json_node&} 子节点对象
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时返回子节点的引用, 否则返回本 json 节点对象的引用

◆ add_child() [3/6]

json_node& acl::json_node::add_child ( bool  as_array = false,
bool  return_child = false 
)

创建一个 json 节点对象,并将之添加为本 json 节点的子节点

参数
as_array{bool} 是否数组对象
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_child() [4/6]

json_node& acl::json_node::add_child ( const char *  tag,
bool  return_child = false 
)

创建一个 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_child() [5/6]

json_node& acl::json_node::add_child ( const char *  tag,
json_node node,
bool  return_child = false 
)

创建一个 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
node{json_node*} 标签值指针
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_child() [6/6]

json_node& acl::json_node::add_child ( const char *  tag,
json_node node,
bool  return_child = false 
)

创建一个 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
node{json_node&} 标签值引用
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_double()

json_node& acl::json_node::add_double ( const char *  tag,
double  value,
bool  return_child = false 
)

创建一个 double 类型的 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
value{double} 标签值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_null()

json_node& acl::json_node::add_null ( const char *  tag,
bool  return_child = false 
)

创建一个 null 类型的 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_number()

json_node& acl::json_node::add_number ( const char *  tag,
long long int  value,
bool  return_child = false 
)

创建一个int64 类型的 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
value{int64} 标签值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用

◆ add_text()

json_node& acl::json_node::add_text ( const char *  tag,
const char *  value,
bool  return_child = false 
)

创建一个字符串类型的 json 节点对象,并将之添加为本 json 节点的子节点

参数
tag{const char*} 标签名
value{const char*} 标签值
return_child{bool} 是否需要本函数返回新创建的子节点的引用
返回
{json_node&} return_child 为 true 时创建的新节点的引用, 否则返回本 json 节点对象的引用 注:此处的 add_text 和 add_child 是同样的功能

◆ children_count()

int acl::json_node::children_count ( void  ) const

返回该 json 节点的下一级子节点的个数

返回
{int} 永远 >= 0

◆ clear()

void acl::json_node::clear ( void  )

当在遍历该 json 节点时,内部会动态产生一些临时 json_node 对象,调用 此函数可以清空这些对象,一旦调用此函数进行了清除,则由 first_child, next_child 返回的 json_node 节点对象将不再可用,否则会产生内存非法 访问

◆ depth()

int acl::json_node::depth ( void  ) const

返回该 json 节点在整个 json 树中的深度

返回
{int}

◆ detach()

int acl::json_node::detach ( void  )

将本节点及其子节点从 json 树中删除,其内存将由 json 对象统一释放

返回
{int} 被释放的节点数量

◆ first_child()

json_node* acl::json_node::first_child ( void  )

获得本节点的第一个子节点,需要遍历子节点时必须首先调用此函数

返回
{json_node*} 返回空表示没有子节点,返回的非空对象不能 在外部 delete,因为内部会自动释放

◆ get_bool()

const bool* acl::json_node::get_bool ( void  ) const

当 json 节点为布尔类型时,该函数返回布尔值的指针地址

返回
{bool*} 当返回 NULL 时表示该对象非布尔类型

◆ get_double()

const double* acl::json_node::get_double ( void  ) const

当 json 节点为浮点类型时,该函数返回长整型值的指针地址

返回
{const double*} 当返回 NULL 时表示该对象非浮点类型

◆ get_int64()

const long long int* acl::json_node::get_int64 ( void  ) const

当 json 节点为长整型类型时,该函数返回长整型值的指针地址

返回
{const long long int*} 当返回 NULL 时表示该对象非长整型类型

◆ get_json()

json& acl::json_node::get_json ( void  ) const

获得 json 对象的引用

返回
{json&}

◆ get_json_node()

ACL_JSON_NODE* acl::json_node::get_json_node ( void  ) const

取出对应于 ACL 库中的 json 节点对象

返回
{ACL_JSON_NODE*} 返回节点对象,注:该节点用户不能单独释放

◆ get_obj()

json_node* acl::json_node::get_obj ( void  ) const

当该 json 节点存在子节点时,返回本 json 节点标签对应的 json 子节点

返回
{const json_node*} 返回 NULL 说明不存在子节点 注:get_text 与 get_obj 不会同时返回非 NULL

◆ get_parent()

json_node& acl::json_node::get_parent ( void  ) const
返回
{json_node&} 返回本节点的父节点引用,在采用级联方式创建 json 对象时,本函数常被用于返回父节点

◆ get_string()

const char* acl::json_node::get_string ( void  ) const

当 json 节点为字符串类型时,该函数返回字符串内容

返回
{const char*} 返回 NULL 表示该节点非字符串类型

◆ get_text()

const char* acl::json_node::get_text ( void  ) const

返回该 json 节点的文本标签值,当该值为布尔型或数值型时调用者可 自行进行转换

返回
{const char*} 返回空说明没有文本标签值

◆ get_type()

const char* acl::json_node::get_type ( void  ) const

获得该节点类型的描述

返回
{const char*}

◆ is_array()

bool acl::json_node::is_array ( void  ) const

判断本节点是否为数组类型

返回
{bool}

◆ is_bool()

bool acl::json_node::is_bool ( void  ) const

判断本节点数据是否为布尔类型

返回
{bool}

◆ is_double()

bool acl::json_node::is_double ( void  ) const

判断本节点数据是否为浮点类型

返回
{bool}

◆ is_null()

bool acl::json_node::is_null ( void  ) const

判断本节点数据是否为 null 类型

返回
{bool}

◆ is_number()

bool acl::json_node::is_number ( void  ) const

判断本节点数据是否为数字类型

返回
{bool}

◆ is_object()

bool acl::json_node::is_object ( void  ) const

判断本节点是否为对象类型

返回
{bool}

◆ is_string()

bool acl::json_node::is_string ( void  ) const

判断本节点数据是否为字符串类型

返回
{bool}

◆ next_child()

json_node* acl::json_node::next_child ( void  )

获得本节点的下一个子节点

返回
{json_node*} 返回空表示遍历过程结束,返回的非空对象不能 在外部 delete,因为内部会自动释放

◆ operator[]()

json_node* acl::json_node::operator[] ( const char *  tag)

从当前 json 节点的子节点中提取对应标签的 json 子节点

参数
tag{const char*} json 子节点的标签名
返回
{json_node*} 返回 NULL 表示不存在

◆ set_tag()

bool acl::json_node::set_tag ( const char *  name)

当该 json 节点有标签时,本函数用来新的标签值覆盖旧的标签名

参数
name{const char*} 新的标签值,为非空字符串
返回
{bool} 返回 false 表示该节点没有标签或输入空串,没有进行替换

◆ set_text()

bool acl::json_node::set_text ( const char *  text)

当该 json 节点为叶节点时,本函数用来替换节点的文本值

参数
text{const char*} 新的叶节点文本值,为非空字符串
返回
{bool} 返回 false 表示该节点非叶节点或输入非法

◆ tag_name()

const char* acl::json_node::tag_name ( void  ) const

取得本 json 节点的标签名

返回
{const char*} 返回 json 节点标签名,如果返回空,则说明 调用者需要判断返回值

◆ to_string()

const string& acl::json_node::to_string ( string out = NULL) const

将当前 json 节点转换成 json 字符串(包含本 json 节点及其子节点)

参数
out{string*} 非空时,则使用此缓冲区,否则使用内部缓冲区
返回
{const char*}

被这些函数引用 acl::serialize().

+ 这是这个函数的调用关系图:

友元及相关函数文档

◆ dbuf_guard

friend class dbuf_guard
friend

在文件 json.hpp388 行定义.

◆ json

friend class json
friend

在文件 json.hpp387 行定义.

类成员变量说明

◆ b

bool acl::json_node::b

在文件 json.hpp422 行定义.

◆ d

double acl::json_node::d

在文件 json.hpp423 行定义.

◆ n

long long int acl::json_node::n

在文件 json.hpp420 行定义.


该类的文档由以下文件生成: