当前位置:网站首页 > 技术博客 > 正文

jsoncpp库的使用



Json和JsonCpp是什么这里就不多余介绍了,大概知道就行,各位想详细了解的话可以自行搜索。


JsonCpp的代码在github上开源,可以前往github下载源代码加入到项目中使用。

也可以编译为静态/动态库使用。

源码地址:https://github.com/open-source-parsers/jsoncpp

访问不了的话可以自行百度下载。


1. Json::Value

按照字面字面意思理解,就是JsonCpp里定义的一种值
值的类型有以下几种:

 

Tips 1. 对象类型的value由一到多个键值对组成,每个键值对的值可以是任意类型。

Tips 2. 数组中的项也可以是任意类型,可以任意混搭。

Tips 3. 多个键值对 或 多个数组的项 之间用逗号‘,’隔开,最后一个键值对(数组的项)后不要加逗号。

Tips 4. json文件可以用vs code一键格式化,方便实用。有红波浪线的地方就是有错误,会parse失败。

值对象的类型可以通过 type() 方法获取。


2. Json::Reader

Json解释器,可以使用 parse() 方法将Json格式的字符串解析成Json::Value

 
  

3. Json::FastWriterJson::StyleWriter

可以将Json::Value转换为字符串。其中FastWriter结果是无格式的字符串。而StyleWriter是格式化的字符串。

 

其中转换为格式化字符串也可以使用Json::Value的 toStyleString() 方法。

1.







[] 里可以传入 char * 或 string 等其他字符串作为 key 取得对应的值。也可以传入非负整数作为索引取得值。

2.

判断type()是否为nullValue,是则返回true,否则返回false。
效果等同于操作符。

但是这样使用会先调用重载的 [] 符号,如果传入的 key 值不存在,就会创建一个新的空键值对。

3.

获取Json::Value的键列表,本质是字符串向量。

Tips: 当value的类型是 objectValuenullValue 时才可以使用此函数,否则会报运行时错误。因此,收到value时一定要先判断类型处理,不要一上来就getMemberNames()。

4.

如果类型是数组或对象,则返回数组或对象的大小;其他类型返回0。

5.

如果是数组或对象类型,size()为0则返回true;
如果是nullValue类型,返回true;
剩下类型返回false。

6.

判断 value 是否包含传入的字符串作为 key 的键值对。
包含则返回 true
不包含则返回 false

7.

移除字符串作为 key 的键值对。
返回被移除的键值对的值。
不存在该键值对则返回null。

仅当 value 的类型是 nullValue 或 objectValue 时可调用此函数,否则会assert错误触发中断。

8.

添加value到数组的结尾

仅当 value 的类型为 nullValue 或 arrayValue 时才可调用此函数,否则会assert错误触发中断。

遍历方法如下:

入口处先判断一下类型

 
 

如过想要根据 key 值寻找特定键值对的话,可以修改一下 objectValue() ,然后递归调用。

JsonCpp中提供的方法非常丰富全面,源码也对新人比较友好,可以多加阅读。

以上仅是我个人学习总结,欢迎各位一起探讨补充

  • 上一篇: c语言putpixel函数
  • 下一篇: xlwt 合并单元格
  • 版权声明


    相关文章:

  • c语言putpixel函数2025-05-12 17:30:04
  • c++常用容器类名2025-05-12 17:30:04
  • scanf语句用法2025-05-12 17:30:04
  • cglib和jdk动态代理底层实现原理2025-05-12 17:30:04
  • 我的世界java联机怎么联?2025-05-12 17:30:04
  • xlwt 合并单元格2025-05-12 17:30:04
  • 移位运算的基本原理2025-05-12 17:30:04
  • linux中time函数2025-05-12 17:30:04
  • 开窗函数partition by2025-05-12 17:30:04
  • java内存模型原理2025-05-12 17:30:04