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 数据操作麻烦点。
版权声明:本文为 阡陌 的原创文章,遵循「CC BY-NC-SA 4.0」版权协议。若转载,请附上本文链接及本声明。
本文地址:https://www.mculoop.com/archives/161.html
若对本文有疑问可在评论区留言,我们看到后会尽量解答。