找回密码
 立即注册
搜索
查看: 1171|回复: 0

Qt JSON 库

[复制链接]

267

主题

0

回帖

1164

积分

管理员

积分
1164
发表于 2024-1-19 01:48:15 | 显示全部楼层 |阅读模式

Qt 的 JSON 库由几种对象和相应的头文件组成,主要的有:

QJsonDocument

该类用于操作 JSON 文档。

从文件到文档对象实例:

QJsonDocument jDoc(QJsonDocument::fromJson(file.readAll()))

此外还有 fromBinaryData()fromRawData() 方法。

JSON 对象 obj 到 文档 到文件:

QJsonDocument jDoc(obj);
file.write(jDoc.toJson(QJsonDocument::Indented));

QJsonObject

QJsonObject 是一个重要的类型,它就是  JSON 中的“对象”概念。一个对象就是一个键值对。
使用 insert() 插入一个键值对或覆盖一个已存在的键值对还可以删掉一个键值对, 用 remove() 可以删除一个键值对。

QJsonArray

它是 JSON 数组类,可以存储多个没有键的值(QJsonValue)

QJsonValue

QJsonValue 也是一个重要的常用类型,它是键值对的值或是数组的值。而值可以是一个键值对,也可以是一个数组,还可以是其它类型:
bool(QJsonValue::Bool)
double(QJsonValue::Double)
string(QJsonValue::String)
array(QJsonValue::Array)
object(QJsonValue::Object)
null(QJsonValue::Null)

要操作一个对象类型的值,要先把值转换成对象副本才可以:

QJsonValue.toObject()

所以不能直接修改一个值 ValueA 下面的某个键的值 ValueB,只能将这个值 ValueA 转换成 ObjectA 然后修改 Object 的某个键的值 ValueB,然后再用对象 ObjectA 覆盖 ValueA(可以用 insert 方法)。如果要修改多层次的某个值,就要采用递归的方法一级一级找到要修改的值,然后用高层次的对象覆盖。这点就比 python 的 json 数据操作麻烦点。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|棱讯科技 ( 粤ICP备2024228160号-2|粤公网安备44030002003510号 )

GMT+8, 2024-12-22 02:38 , Processed in 0.018181 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表