我是靠谱客的博主 活泼猎豹,最近开发中收集的这篇文章主要介绍jsonc的基本使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

官方中文主页:http://www.json.org/json-zh.html

项目地址:https://github.com/jehiah/json-c

示例:

json_object * cmd = json_object_new_object();
json_object_object_add(cmd, "cmd", json_object_new_int(1));
json_object * parm = json_object_new_object();
json_object_object_add(parm, "id", json_object_new_int(35));
json_object_object_add(parm, "ip", json_object_new_string("192.168.1.24"));
json_object_object_add(parm, "port", json_object_new_int(8899));
json_object_object_add(parm, "user", json_object_new_string("admin"));
json_object_object_add(parm, "pass", json_object_new_string("12345"));
json_object_object_add(parm, "other", NULL);
json_object_object_add(cmd, "parm", parm);
std::string strJson = json_object_to_json_string(cmd);
// json_object_put(parm);
json_object_put(cmd);
return strJson;
{ "cmd": 1, "parm": { "id": 35, "ip": "192.168.1.24", "port": 8899, "user": "admin", "pass": "12345", "other": NULL } }


注意
        使用C库最关心的是内存的分配和释放了。jsonc的内存管理是基于引用计数的内存树(链),如果把一个struct json_object 对象a,add到另一个对象b上,就不用显式的释放(json_object_put)a了,相当于把a挂到了b的对象树上,释放b的时候,就会释放a。当a即add到b上,又add到对象c上时会导致a被释放两次(double free),这时可以增加a的引用计数(调用函数json_object_get(a)),这时如果先释放b,后释放c,当释放b时,并不会真正的释放a,而是减少a的引用计数为1,然后释放c时,才真正释放a。
        比如说上面代码中如果去掉注释,代码运行到json_object_put(cmd)时就会崩溃(但观察cmd还有资源未被释放),因为parm已经被释放了。


——2014-7-9 14:18:08 补充解析多级object的例子:

/*{
"cmd": 10,
"param": {
"name": "lala",
"age": 25
}
}*/
int _tmain(int argc, _TCHAR* argv[])
{
std::string strJson = "{"cmd": 10,"param": {"name": "lala","age": 25}}";
char szJson[1024] = {0};
strcpy(szJson, strJson.c_str());
json_object * cmd = json_tokener_parse(szJson);
int nCmd = json_object_get_int(json_object_object_get(cmd, "cmd"));
json_object * param = json_object_object_get(cmd, "param");
std::string strName = json_object_get_string(json_object_object_get(param, "name"));
int strAge = json_object_get_int(json_object_object_get(param, "age"));
json_object_put(cmd);
return 0;
}


参考资料:
1、jsonc 使用笔记

最后

以上就是活泼猎豹为你收集整理的jsonc的基本使用的全部内容,希望文章能够帮你解决jsonc的基本使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部