资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

JsonHandler

此类封装JSON处理器相关操作,包括创建JSON字符串与解析JSON字符串

Public methods
void add_number_to_object(cJSON object, string key, number value)
将一个数字加在一个节点下
void add_object_to_array(cJSON array_object, cJSON sub_object)
将一个节点添加到一个数组节点下
void add_object_to_object(cJSON object, string key, cJSON sub_object)
将一个节点加在另一个节点下
void add_string_to_object(cJSON object, string key, string value)
将一个字符串加在一个节点下
cJSON create_array_object()
创建一个数组节点
cJSON create_array_object()
创建一个节点
cJSON create_object()
创建一个数组节点
void delete_object(cJSON object)
释放节点内存。注:使用完后将root节点放入释放内存即可
cJSON get_array_object_size(cJSON object)
获取数组节点的大小
cJSON get_double_value(cJSON object, string key)
获取节点中的浮点值
int get_int_value(cJSON object, string key)
获取节点中的整型值
cJSON get_object(cJSON object, string key)
从一个节点中通过key获取另一个子节点
cJSON get_object_by_index(cJSON object, int index)
通过序号来获取某个子节点,在父节点是一个数组类节点时使用
string get_string_value(cJSON object, string key)
获取节点中的字符串值
bool if_has_object(cJSON object, string key)
判断该节点里是否有某个子元素,包含object、int、double、string
JsonHandler JsonHandlerDemo()
Demo
cJSON parse(string data)
解析一个JSON字符串
string print(cJSON object)
将一个节点转换为字符串

JsonHandlerDemo

JsonHandlerDemo ()

demo示例

sample:
local root = JsonHandler:create_object()
local array = JsonHandler:create_array_object()

local pitem1 = JsonHandler:create_object()
JsonHandler:add_string_to_object(pitem1, "name", "zhangsan")
JsonHandler:add_number_to_object(pitem1, "age", 22)
JsonHandler:add_number_to_object(pitem1, "height", 178.23)

local pitem2 = JsonHandler:create_object()
JsonHandler:add_string_to_object(pitem2, "name", "lisi")
JsonHandler:add_number_to_object(pitem2, "age", 26)
JsonHandler:add_number_to_object(pitem2, "height", 184.56)

JsonHandler:add_object_to_array(array, pitem1)

JsonHandler:add_object_to_array(array, pitem2)

JsonHandler:add_object_to_object(root, "person", array)

local data = JsonHandler:print(root)
 io.write("json test answer:"..data)

local root = JsonHandler:parse(data)
local person = JsonHandler:get_object(root, "person")

if (JsonHandler:if_has_object(root,"person")) then
io.write("json test have person:")
else
 io.write("json test have no person:")
end
if (JsonHandler:if_has_object(root,"personnnnnnn")) then
 io.write("json test personnnnnnn:")
else
 io.write("json test no personnnnnnn:")
end
local size = JsonHandler:get_array_object_size(person)
 io.write("json test size:"..size)

local first_person = JsonHandler:get_object_by_index(person, 0)
local f_name = JsonHandler:get_string_value(first_person, "name")
local age = JsonHandler:get_int_value(first_person, "age")
local height = JsonHandler:get_double_value(first_person, "height")
 io.write("json test 1:"..f_name..","..age..","..height)

local first_person = JsonHandler:get_object_by_index(person, 1)
local f_name = JsonHandler:get_string_value(first_person, "name")
local age = JsonHandler:get_int_value(first_person, "age")
local height = JsonHandler:get_double_value(first_person, "height")
 io.write("json test 2:"..f_name..","..age..","..height)
JsonHandler:delete_object(root)

add_number_to_object

void add_number_to_object (cJSON object, string key, number value)

将一个数字加在一个节点下

Parameters

  • object | cJSON : 节点
  • key | string : 子节点的key值
  • value | number : 子节点的value值,数字类型
sample:
JsonHandler:add_number_to_object(root, "key", 100)
JsonHandler:add_number_to_object(root, "key", 50.50)

add_object_to_array

void add_object_to_array (cJSON array_object, cJSON sub_object)

将一个节点添加到一个数组节点下

Parameters

  • array_object | cJSON : 会被添加的数组节点
  • sub_object | cJSON : 子节点的key值。注意:建议在sub_object数据完整后再把sub_object加在其父数组节点下
sample:
local array = JsonHandler:create_array_object()

local pitem1 = JsonHandler:create_object()
local pitem2 = JsonHandler:create_object()
JsonHandler:add_object_to_array(array, pitem1)
JsonHandler:add_object_to_array(array, pitem2)

add_object_to_object

void add_object_to_object (cJSON object, string key, cJSON sub_object)

将一个节点加在另一个节点下

Parameters

  • object | cJSON : 父节点
  • key | string : 子节点的key值
  • sub_object | cJSON : 子节点。注意:建议在sub_object数据完整后再把sub_object加在其父节点下
sample:
JsonHandler:add_object_to_object(root, "objectname", subobject)

add_string_to_object

void add_string_to_object (cJSON object, string key, string value)

将一个字符串加在一个节点下

Parameters

  • object | cJSON : 节点
  • key | string : 子节点的key值
  • value | string : 子节点的value值,字符串类型
sample:
JsonHandler:add_string_to_object(root, "key", "value")

create_array_object

cJSON create_array_object ()

创建一个数组节点

Returns

  • cJSON | cJSON* : 节点指针
sample:
local root = JsonHandler:create_array_object()

create_object

cJSON create_object ()

设置请求的url地址

Returns

  • cJSON | cJSON* : 节点指针
sample:
local root = JsonHandler:create_object()

delete_object

void delete_object (cJSON object)

释放节点内存。注:使用完后将root节点放入释放内存即可

Parameters

  • object | cJSON : 被释放内存的节点,通常情况下放入根节点即可
sample:
JsonHandler:delete_object(root)

get_array_object_size

int get_array_object_size (cJSON object)

获取数组节点的大小

Parameters

  • object | cJSON : 节点

Returns

  • int | int
sample:
local size = JsonHandler:get_array_object_size(object)

get_double_value

double get_double_value (cJSON object, string key)

获取节点中的浮点值

Parameters

  • object | cJSON : 父节点
  • key | string : 要获取的节点名称

Returns

  • double | double : 如果节点中不存在对应key值则返回0
sample:
local double_value = JsonHandler:get_double_value(object, "key")

get_int_value

int get_int_value (cJSON object, string key)

获取节点中的整型值

Parameters

  • object | cJSON : 父节点
  • key | string : 要获取的节点名称

Returns

  • int | int : 如果节点中不存在对应key值则返回0。注意:如果获取的值过大,可能会产生int型越界的情况,此时请使用get_double_value
sample:
local int_value = JsonHandler:get_int_value(object, "key")

get_object

cJSON get_object (cJSON object, string key)

从一个节点中通过key获取另一个子节点

Parameters

  • object | cJSON : 父节点
  • key | string : 要获取的节点名称

Returns

  • cJSON | JSON* : 没有则返回nil
sample:
local sub_object = JsonHandler:get_object(object, "subobject_name")

get_object_by_index

cJSON get_object_by_index (cJSON object, int index)

通过序号来获取某个子节点,在父节点是一个数组类节点时使用

Parameters

  • object | cJSON : 父节点, index要获取的节点的下标
  • index | int : 要获取的节点的下标

Returns

  • cJSON | JSON* : 没有则返回nil
sample:
local first_object = JsonHandler:get_object_by_index(object, 0)

get_string_value

string get_string_value (cJSON object, string key)

获取节点中的字符串值

Parameters

  • object | cJSON : 父节点
  • key | string : 要获取的节点名称

Returns

  • string | string : 如果节点中不存在对应key值则返回空字符串""
sample:
local string = JsonHandler:get_string_value(object, "key")

if_has_object

bool if_has_object (cJSON object, string key)

判断该节点里是否有某个子元素,包含object、int、double、string

Parameters

  • object | cJSON : 父节点
  • key | string : 要获取的节点名称

Returns

  • bool | bool : true表示有,false 表示没有
sample:
JsonHandler:if_has_object(object, "subobject_name")

parse

cJSON parse (string data)

解析一个JSON字符串

Parameters

  • data | string : string类型

Returns

  • cJSON | JSON* : 无法解析则返回nil
sample:
local root = JsonHandler:parse(data)

print

string print (cJSON object)

将一个节点转换为字符串

Parameters

  • object | cJSON : 被转换为字符串的节点

Returns

  • string | std::string : 得到json字符串
sample:
local data = JsonHandler:print(root)
io.write("json test answer:"..data)
上一篇
BatchLoader
下一篇
PaddleImgseg