QJsonObject理论总结
- 一、概述
- 二、常用操作
- 三、注意事项
一、概述
QJsonObject类封装一个JSON对象。JSON对象是键值对的列表,其中键是唯一字符串,值由QJsonValue表示。
体现在Json字符串里就是用 { } 括号括起来的部分就是 QJsonObject 对象。
{
"total": 200,
"doc": {
"book": "青年大学习",
"remark": "今天就学完"
},
"data": [
{
"avatar": "http://dummyimage.com/498x200.png/6e4a6b/247832",
"logo": "http://dummyimage.com/100x200.png/0a257b/2a1f0c",
},
{
"avatar": "http://dummyimage.com/498x200.png/6e4a6b/247832",
"logo": "http://dummyimage.com/100x200.png/0a257b/2a1f0c",
},
{
"avatar": "http://dummyimage.com/498x200.png/6e4a6b/247832",
"logo": "http://dummyimage.com/100x200.png/0a257b/2a1f0c",
}]
}
像上面最外面的括号括起来的就是一个 QJsonObject 对象, doc 字段里的 值也是一个对象, 在data里就是一个对象列表。
二、常用操作
QJsonObject可以与QVariantMap进行转换,也是一个互相转换的过程。
// Map -> QJsonObject
fromVariantHash(const QVariantHash &hash)
fromVariantMap(const QVariantMap &map)
// QJsonObject -> Map
toVariantHash() const
toVariantMap() const
我们也可以对 QJsonObject 进行 增删改查。
增:insert()
删:remove()
改:value() 或者 [ ]
查:contains()
像 value() 和 [ ] 使用前必须要注意,使用contains() 去查看是否具有这些键,因为这个改的函数会默认没有键就会添加键并赋值。
我们可以使用size()、insert()和remove()查询(key, value)对的数量,并使用标准c++迭代器模式对其内容进行迭代。
像还有其他比较有用的接口如
isEmpty() 查询是否为空;
keys() : 返回所有的键;
length() :对象的个数
三、注意事项
QJsonObject是一个隐式共享类,只要文档没有被修改,它就与创建它的文档共享数据。
可以通过QJsonDocument在对象和基于文本的JSON之间进行转换。