开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

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