美文网首页
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)就放在最后,这样代码逻辑就简单了

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

相关文章

  • 解决方法:STM32使用cJSON解析数据失败

    一、问题 在 STM32 移植 cJSON 库后,使用 cJSON_Parse(),解析失败。 使用 cJSON_...

  • cJSON库使用

    cJSON安装 在Linux下,使用下面命令下载源码git clone https://github.com/D...

  • cjson库的使用

    现在很流行json格式,现在项目中所有数据相关的格式也是用的这个,因为是c++开发,这就涉及到一个问题,C++中如...

  • cJSON使用(一)

    目录 cJSON使用(一)cJSON使用(二) cJSON介绍 cJSON是一个超轻巧,携带方便,单文件,简单的可...

  • 2020-01-08 cJSON使用

    [TOC] cJSON 库只有 cJSON.c、cJSON.h 这两个文件,非常方便引入到项目中,而其中的方法也非...

  • V语言学习笔记-19内置json支持

    内置json支持 v标准库的json模块有点特别: 基于C语言的cJSON库实现 没有使用运行时反射,性能会更好 ...

  • skynet cjson

    Skynet早期拥有lua-cjson库,后被sproto取代。由于Lua5.3开始支持整形,但cjson并没有适...

  • CJSON使用

    项目地址:https://github.com/DaveGamble/cJSON 数据封装 #include #i...

  • cJSON的使用

    root = cJSON_CreateArray();//创建一个数组 展示结果: struct cJSON* s...

  • JSON的简单介绍&cJSON库使用(一)

    JSON WIKI解释: JSON(JavaScript Object Notation,JavaScript对象...

网友评论

      本文标题:cjson库的使用

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