Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON
来源:互联网 发布:2016印度宏观经济数据 编辑:程序博客网 时间:2024/06/06 23:16
上一章我们了解了如何使用 QJson 处理 JSON 文档。QJson 是一个基于 Qt 的第三方库,适用于 Qt4 和 Qt5 两个版本。不过,如果你的应用仅仅需要考虑兼容 Qt5,其实已经有了内置的处理函数。Qt5 新增加了处理 JSON 的类,与 XML 类库类似,均以 QJson 开头,在 QtCore 模块中,不需要额外引入其它模块。Qt5 新增加六个相关类:
QJsonArray
封装 JSON 数组QJsonDocument
读写 JSON 文档QJsonObject
封装 JSON 对象QJsonObject::iterator
用于遍历QJsonObject
的 STL 风格的非 const 遍历器QJsonParseError
报告 JSON 处理过程中出现的错误QJsonValue
封装 JSON 值我们还是使用前一章的 JSON 文档,这次换用QJsonDocument
来解析。注意,QJsonDocument
要求使用 Qt5,本章中所有代码都必须在 Qt5 环境下进行编译运行。
这段代码与前面的几乎相同。QJsonDocument::fromJson()
可以由QByteArray
对象构造一个QJsonDocument
对象,用于我们的读写操作。这里我们传入一个QJsonParseError
对象的指针作为第二个参数,用于获取解析的结果。如果QJsonParseError::error()
的返回值为QJsonParseError::NoError
,说明一切正常,则继续以QVariant
的格式进行解析(由于我们知道这是一个 JSON 对象,因此只判断了isObject()
。当处理未知的 JSON 时,或许应当将所有的情况都考虑一边,包括isObject()
、isArray()
以及isEmpty()
)。
也就是说,如果需要使用QJsonDocument
处理 JSON 文档,我们只需要使用下面的代码模板:
将QVariant
对象生成 JSON 文档也很简单:
这里我们仍然使用的是QJsonDocument
,只不过这次我们需要使用QJsonDocument::fromVariant()
函数获取QJsonDocument
对象。QJsonDocument
也可以以二进制格式读取对象,比如QJsonDocument::fromBinaryData()
和QJsonDocument::fromRawData()
函数。当我们成功获取到QJsonDocument
对象之后,可以使用toJson()
生成 JSON 文档。
以上介绍了当我们有一个 JSON 文档时,如何使用QJsonDocument
进行处理。如果我们没有 JSON 文档,那么我们可以使用QJsonDocument
的setArray()
和setObject()
函数动态设置该对象,然后再生成对应的 JSON 格式文档。不过这部分需求比较罕见,因为我们直接可以从QVariant
值类型获取。
Qt5 提供的 JSON 类库直接支持隐式数据共享,因此我们不需要为复制的效率担心。
- Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON
- 使用 QJsonDocument 处理 JSON
- Qt 之 QJsonDocument 解析json 数据
- Qt5中使用 QJsonDocument 处理 JSON
- QJsonDocument 处理 JSON
- Qt模块化笔记之core——使用QJsonDocument解析JSON
- Qt模块化笔记之core——使用QJsonDocument输出JSON数据
- Qt 学习之路 2(63):使用 QJson 处理 JSON
- Qt:QJson操作json文件(QJsonDocument、QJsonArray、QJsonObject)
- qt QJsonDocument QVariant
- Qt 学习之路 2(59):使用流处理 XML
- Qt 学习之路 2(60):使用 DOM 处理 XML
- Qt 学习之路 2(61):使用 SAX 处理 XML
- QJsonDocument
- Qt之简单使用Json
- Qt 学习之路 2(52):使用拖放
- Qt 学习之路 2(2):Qt 简介 笔记
- Qt 学习之路 2(2):Qt 简介
- JDBC数据库连接池实现原理(手动实现)
- 在 ASP.NET Core 项目中实现小写的路由URL
- faster-rcnn笔记
- 我的汇编语言程序模板
- (crm笔记1-1) 框架的搭建
- Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON
- 【Java】去除List中的重复值并按照从小到大排列
- Xcode9提示"Safe Area Layout Guide before iOS 9.0"
- STL中的内存分配方式
- Tomcat源码分析--国际化--StringManager类
- Count and Say
- 一周AI看点 | 北航设立全国首个人工智能专业,前IBM沃森首席科学家任京东副总裁
- 他假期也不闲着!他是斯坦福AI专业的研究生,谷歌无人车之父的高徒,还是广告新星、摄影师、肌肉男,帅气小鲜肉......看看你!
- POJ 1753--Flip Game