Jsoncpp 使用方法大全
来源:互联网 发布:java数字金字塔代码 编辑:程序博客网 时间:2024/05/21 09:02
Json(JavaScript Object Notation )是一种轻量级的数据交换格式。简而言之,Json组织形式就和python中的字典, C/C++中的map一样,是通过key-value对来组织的,key是任意一个唯一字符串,value可以是bool,int,string 或者嵌套的一个json。关于Json 格式可以参考官方网站。
Jsoncpp 是一个用来处理 Json文本的开源C++库,下面就简单介绍使用Jsoncpp对Json文件的常见操作。
Jsoncpp 常用变量介绍
在Jsoncpp中,有几个常用的变量特别重要,首先介绍一下。
Json::Value
Json::Value 用来表示Json中的任何一种value抽象数据类型,具体来说,Json中的value可以是一下数据类型:
- 有符号整数 signed integer [range: Value::minInt - Value::maxInt]
- 无符号整数 unsigned integer (range: 0 - Value::maxUInt)
- 双精度浮点数 double
- 字符串 UTF-8 string
- 布尔型 boolean
- 空 ‘null’
- 一个Value的有序列表 an ordered list of Value
- collection of name/value pairs (javascript object)
可以通过
- 1
- 2
- 3
- 4
- 5
Json::Reader
Json::Reader可以通过对Json源目标进行解析,得到一个解析好了的Json::Value,通常字符串或者文件输入流可以作为源目标。
假设现在有一个example.json文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
使用Json::Reader对Json文件进行解析:
- 1
- 2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
使用Json::Reader对字符串进行解析
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Json::Writer
Json::Writer 和 Json::Reader相反,是把Json::Value对象写到string对象中,而且Json::Writer是个抽象类,被两个子类Json::FastWriter和Json::StyledWriter继承。
简单来说FastWriter就是无格式的写入,这样的Json看起来很乱没有格式,而StyledWriter就是带有格式的写入,看起来会比较友好。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
结果:
example_styled_writer.json
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
example_fast_writer.json
- 1
Jsoncpp 其他操作
通过前面介绍的Json::value, Json::Reader, Json::Reader 可以实现对Json文件的基本操作,下面介绍一些其他的常用的操作。
判断key是否存在
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
判断Value是否为null
首先要给example.json添加一个key-value对:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
判断是否为null的成员函数
- 1
- 1
- 2
- 3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
另外值得强调的是,Json::Value和C++中的map有一个共同的特点,就是当你尝试访问一个不存在的 key 时,会自动生成这样一个key-value默认为null的值对。也就是说
- 1
- 2
总结就是要判断是否含有key,使用isMember成员函数,value是否为null使用isNull成员函数,value是否为空可以用empty() 和 size()成员函数。
得到所有的key
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
可以看到Json::Value::Members实际上就是一个值为string的vector,通过getMemberNames得到所有的key。
删除成员
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
参考
http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html
- Jsoncpp 使用方法大全
- Jsoncpp 使用方法大全
- jsoncpp使用方法
- jsoncpp使用方法
- JsonCpp的简单使用方法
- jsoncpp使用方法总结
- JsonCpp的简单使用方法
- jsoncpp 库的使用方法
- jsoncpp库的使用方法
- JsonCpp的使用方法
- Jsoncpp的使用方法
- Jsoncpp 使用方法解析
- JsonCpp的简单使用方法
- JsonCpp的简单使用方法
- JsonCpp的简单使用方法
- JsonCpp的简单使用方法
- JsonCpp使用方法详解
- jsoncpp的一些使用方法介绍
- Android正则表达式,验证邮箱、手机号码等。
- 获取公众号菜单配置-php开发公众号
- 数据结构的学习
- winform 窗体属性FormBorderStyle 为none时使窗体可以被移动
- (原创)安卓原生加载框的简单示例
- Jsoncpp 使用方法大全
- 嵌入式开发中关键字const、static、volatile的用法分析
- 更改IDEA的快捷键为Eclipse风格
- session与cookie的区别浅析
- 结构体struct
- Java同步注解(Annotation)解释
- Above Average
- javascript-基础1
- 随想录:开发一流Android SDK