Qt JSON 库
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 数据操作麻烦点。
页:
[1]