2025年cjson库(cjson库输出json文件)

cjson库(cjson库输出json文件)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>为什么要学习解析Json文件?<br> 工作需要呗!</p> 

讯享网

最近在工作项目中,有需求是需要进行解析Json字符串的,但是我只会使用QT去解析Json,且主管规定要使用C/C++语言去解析,说是为了方便移植到其他项目中进行使用…

花了一两周的悠闲时间去学习,把一些比较常用的解析的JSON字符串解析解析记录下来!

json主要用来网络数据传输!


cjosn库下载网址:https://sourceforge.net/projects/cjson/

在这里插入图片描述
下载后会得到一个压缩包,解压后进入里面拷贝cJSON.c和cJSON.h文件到自己的项目中去。
在这里插入图片描述
最后在自己的项目中把这两个文件添加进来即可!



讯享网






Linux 和 Window下都可以使用!
在这里插入图片描述


  1. 首先介绍一下json数据:
    在这里插入图片描述
    上图的json数据就是这篇博客将要操作的,将会对其进行创建、解析、修改、删除操作。
    其中这里包含项目中常用的封装和解析。








  2. cJSON主要是通过结构体cJSON进行存储数据:
    讯享网
  3. type类型,与下面的宏进行判断
     
  4. 字符串生成cjson指针的函数,使用后需要调用cJSON_Delete进行释放
    讯享网
  5. cjson指针指针生成字符串的函数

     

    使用这个两个函数一定一定一定要释放它们返回的指针内存,否则会造成内存泄漏。

其他的就不介绍了,都会在下面中使用到!


  1. { }
    讯享网

    代码实现上述效果:

     
  2. [ ]
    讯享网

    代码实现上述效果:

     
  3. [ { }, { } ]
    讯享网

    代码实现上述效果:

     
  4. [ [ ], [ ] ]
    讯享网

    代码实现上述效果:

     
  5. { { }, { } }
    讯享网

    代码实现上述效果:

     
  6. 定义根节点 也即是最外层 { }

    讯享网
  7. 将上面定义的{ } 与 [ ] 都插入到跟节点{ }中
     
  8. 打印控制台查看
    讯享网

    记得使用cJSON_Print 和 cJSON_PrintUnformatted返回来的字符指针需要free掉内存!
    在这里插入图片描述

  9. 写入文件中
     
  10. 释放掉cJSON指针
  11. 把代码写好后,编译运行,会在自己的项目路径中创建一个JSON文件,并写入内容,文件内容如下:
    在这里插入图片描述



解析时需要使用结构体中的type类型进行判断,这是为了安全性考虑!

解析时也可以使用cJSON_Print函数去获取字符串或者使用结构体中的valuestring进行获取,但是要注意的是,使用cJSON_Print函数去获取字符串需要free掉获取到的指针,否则会造成内存泄漏!

下面解析会提供两种方式进行解析,第一种是固定的,写死的方式;第二种是灵活的的方式解析!

  1. 打开文件读取josn数据
    讯享网
  2. 使用读取到的json数据初始化cJSON指针
     
  3. 定义一些下面需要使用到的变量
    讯享网
  4. 直接通过键进行解析的
     
  5. 解析对象 { }
    也就是解析下图内容: 在这里插入图片描述

    解析代码:

    讯享网



小讯
上一篇 2025-04-17 08:23
下一篇 2025-05-25 20:58

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/164878.html