JsonHandler
此类封装JSON处理器相关操作,包括创建JSON字符串与解析JSON字符串
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)
string print (cJSON object)
将一个节点转换为字符串
Parameters
- object | cJSON : 被转换为字符串的节点
Returns
- string | std::string : 得到json字符串
sample:
local data = JsonHandler:print(root)
io.write("json test answer:"..data)