现在很流行json格式,现在项目中所有数据相关的格式也是用的这个,因为是c++开发,这就涉及到一个问题,C++中如何处理json格式,网上找了一个库:cJSON,以下记录一下项目中自己使用cJSON库的一些心得。
-
如何替换string类型
cJSON库中没有直接替换type是string的方法,但是项目中这个需求又很常见,这应该如何做呢?可以先删除这个item,然后在增加一个,例如:
{"key": "good"}
,我想把good改成test,那应该这样做:
cJSON_DeleteItemFromObject(pJsObj, "key");
cJSON_AddStringToObject(pJsObj, "key", cJSON_CreateString("test"));
-
使用while循环把一个object加到json对象中
cJSON* pJsChild = pJsDuplicate->child;
while (pJsChild)
{
cJSON_AddStringToObject((cJSON*)ctx1, pJsChild->string, pJsChild->valuestring);
pJsChild = pJsChild->next;
}
-
cJSON_Duplicate函数很有用
把一个josn文件通过cjson的方式转成了cjson指针,因为里面有分配空间,所以需要自己调用cJSON_Delete负责释放内存,要不就造成内存泄漏了。但是如果你是把一个cjson对象A加到另一个cjson对象B中,这个时候就不能掉cJSON_Delete(A)了,因为A的内存现在归B管理了。在处理A的时候有一些判断,异常case情况下还是会调用用cJSON_Delete(A),如果这个使用cJSON_Duplicate,可以让整个程序代码复杂度降低,满足条件的情况下,就调用cJSON_Duplicate,在把复制后的cjson对象加到B中,cJSON_Delete(A)就放在最后,这样代码逻辑就简单了
零散的记录了自己的使用心得~~~
网友评论