当前位置:网站首页 > Vue.js开发 > 正文

cjson库(cjson库输出json文件)



最近在工作项目中,有需求是需要进行解析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. 解析对象 { }
    也就是解析下图内容: 在这里插入图片描述

    解析代码:



到此这篇cjson库(cjson库输出json文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vue路由守卫函数是(vue-router路由守卫)2026-01-30 17:09:08
  • ubuntu更新软件源慢(ubuntu 20.04更新源)2026-01-30 17:09:08
  • ubuntu 18.04 换源(ubuntu1804换源教程)2026-01-30 17:09:08
  • vue2生命周期(vue2生命周期和vue3生命周期)2026-01-30 17:09:08
  • vue2关闭eslint(vue2关闭sourcemap输出)2026-01-30 17:09:08
  • vue 组件插槽(vue 插槽详解)2026-01-30 17:09:08
  • redhat enterprise 9 百度网盘(redhat 9.0)2026-01-30 17:09:08
  • vue3降级vue2(vuecli4怎么降级3)2026-01-30 17:09:08
  • tomcat7.0乱码怎么解决(tomcat10乱码怎么解决)2026-01-30 17:09:08
  • Vue插槽用法(vue三种插槽的区别)2026-01-30 17:09:08
  • 全屏图片