美文网首页
cjson库的使用

cjson库的使用

作者: 溜达溜达就老了 | 来源:发表于2016-06-24 11:01 被阅读2305次

    现在很流行json格式,现在项目中所有数据相关的格式也是用的这个,因为是c++开发,这就涉及到一个问题,C++中如何处理json格式,网上找了一个库:cJSON,以下记录一下项目中自己使用cJSON库的一些心得。


    1. 如何替换string类型
      cJSON库中没有直接替换type是string的方法,但是项目中这个需求又很常见,这应该如何做呢?可以先删除这个item,然后在增加一个,例如:
      {"key": "good"},我想把good改成test,那应该这样做:
      cJSON_DeleteItemFromObject(pJsObj, "key");
      cJSON_AddStringToObject(pJsObj, "key", cJSON_CreateString("test"));
    2. 使用while循环把一个object加到json对象中
      cJSON* pJsChild = pJsDuplicate->child;
      while (pJsChild)
      {
      cJSON_AddStringToObject((cJSON*)ctx1, pJsChild->string, pJsChild->valuestring);
      pJsChild = pJsChild->next;
      }
    3. 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)就放在最后,这样代码逻辑就简单了

    零散的记录了自己的使用心得~~~

    相关文章

      网友评论

          本文标题:cjson库的使用

          本文链接:https://www.haomeiwen.com/subject/ivindttx.html