Qt扫盲-QJsonObject理论总结

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之间进行转换。

你可能感兴趣的:(#,▶,Qt扫盲,QJsonObject,Qt解析json,json,qt5)