0、说明

QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法、说明很有帮助。

QJsonObject类封装了JSON Object。

JSON Object是一个Key-Value对,Key是string,而Value是QJsonValue。

QJsonObject与QVariantMap间可以互相转化。可以通过调用size()来查询K-V对的数量。通过insert()、remove()来从中移除K-V对。

QJsonObject是个隐含共享类,与创建它的Document共享数据。

可以从JSON文本文件中通过QJsonDocument转换得到QJsonObject,也可以进行相反的操作把QJsonObject转为QJsonDocument。

1、模块和加载项

Header: #include <QJsonObject>
qmake: QT += core
Since: Qt 5.0

2、构造

QJsonObject(QJsonObject other) 返回另一个QJsonObject的副本
QJsonObject(List<QPair<QString, QJsonValue> > args) 通过初始化List构造QJsonObject:

QJsonObject object
{
{"property1", 1},
{"property2", 2}
};
QJsonObject() 构造空QJsonObject

3、静态字段

class const_iterator  
class iterator  
typedef ConstIterator  
typedef Iterator  
typedef key_type  
typedef mapped_type  
typedef size_type  

3、静态方法

返回值类型

方法

说明

QJsonObject fromVariantHash(QVariantHash hash) 将一个QVariantHash转化为QJsonObject
QJsonObject fromVariantMap(QVariantMap map) 将一个QVariantMap转化为QJsonObject

4、实例方法

返回值类型

方法

说明

QJsonObject

bool

bool

QJsonValue

operator=(QJsonObject other)

operator!=(QJsonObject other)

operator==(QJsonObject other)

operator[](QString key)

赋值

不相等判断

相等判断

取Key对应的Value

QJsonObject::iterator begin() STL样式的迭代器,指向Object的首项
bool

contains(QString key)

contains(QStringView key)

Object中是否包含Key key
int count() 等同于size(),有多少个K-V对
bool empty() 是否为空
QJsonObject::iterator end() STL样式的迭代器,指向Object的末尾
QJsonObject::iterator erase(QJsonObject::iterator it) 移除迭代器it指向的K-V对
QJsonObject::iterator

find(QString key)

find(QStringView key)

find(QStringView key)

返回迭代器指向的一个Key为key的项
QJsonObject::iterator

insert(QString key, QJsonValue value)

insert(QStringView key, QJsonValue value)

插入一个新key-value对
bool isEmpty() 是否为空
QStringList keys() 所有Key构成的List
int length() 等同于size(),有多少个K-V对
void

remove(QString key)

remove(QStringView key)

移除Key为key的K-V对
int size() 有多少个K-V对
void swap(QJsonObject &other) 交换两个QJsonObject
QJsonValue

take(QString key)

take(QStringView key)

从QJsonObject中移除Key为key的K-V对
QVariantHash toVariantHash() 将QJsonObject转换为QVariantHash
QVariantMap toVariantMap() 将QJsonObject转换为QVariantMap
QJsonValue

value(QString key)

value(QStringView key)

提取Key对应的Value

6、常用

1)提取QJsonObject中某个Key对应的Value:QJsonObject[ key ] 或 QJsonObject.value( key )

7、QJsonValue、QJsonArray、QJsonObject、QJsonDocument之间的关联

Qt:QJsonDocument以及与QJsonArray、QJsonObject、QJsonValue的关联 - ShineLe - 博客园

Qt:QJsonObject的更多相关文章

  1. Qt:QJsonDocument以及与QJsonArray、QJsonObject、QJsonValue的关联

    0.说明 QJsonDocument类提供了read/write JSON文档的方法. 用QJsonDocument::fromJson()方法,可以从将一个JSON文件(或者QByteArray数据 ...

  2. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  3. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  4. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  5. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  6. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  7. Qt:基于TCP和UDP的局域网P2P(局域网)通讯封装

    封装了一个类,可以进行在局域网进行P2P通讯(仅局域网可用) 也就是说,假设局域网中有10台电脑,那么从本机发出的数据,将依次派发到这10台电脑(目前的设计中包括自己这台) 在使用方面,构造的时候给端 ...

  8. QT:用QWebSocket实现webchannel,实现C++与HTML通信

    基本原理是通过channel将C++对象暴露给HTML,在HTML中调用qwebchannel.js.前提是建立transport,QT只提供了一个抽象基类QWebChannelAbstractTra ...

  9. Qt:正则表达式语法:

         正则表达式是验证输入.从输入中提取数据以及对输入进行搜索和替换的强大工具,所谓正则表达式,regexp是一种利用模式匹配语言来描述字符串组成限制条件的方式;        Qt 提供了一个Q ...

随机推荐

  1. Java安全之C3P0链利用与分析

    Java安全之C3P0链利用与分析 0x00 前言 在一些比较极端情况下,C3P0链的使用还是挺频繁的. 0x01 利用方式 利用方式 在C3P0中有三种利用方式 http base JNDI HEX ...

  2. lambda表达式的学习

    Lambda表达式 为什么使用lambda表达式 Lambda表达式可以简化我们的代码,使我们只需要关注主要的代码就可以. //测试用的实体类 public class Employee { priv ...

  3. AT2651 [ARC077D] SS

    定义 \(nxt_i\) 表示在字符串 \(S\) 中以 \(i\) 结尾的最长 \(border\). 引理一:若 \(n - nxt_n \mid n\) 则 \(S_{1 \sim n - nx ...

  4. ForkJoinPool简单使用

    简介 ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个"小任务",把多个"小任务"放到多个处理器核心上并行执行, ...

  5. JVM学习十 -(复习)内存分配与回收策略

    内存分配与回收策略 对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定 ...

  6. Linux curl命令进行网络请求

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11841353.html 1. curl get请求: curl http://www.baid ...

  7. tabbar选中按钮的标题颜色和字体

    @implementation XMGTabBarController /* 问题: 1.选中按钮的图片被渲染 -> iOS7之后默认tabBar上按钮图片都会被渲染 1.修改图片 2.通过代码 ...

  8. .NET 云原生架构师训练营(权限系统 RGCA 开发任务)--学习笔记

    目录 目标 模块拆分 OPM 开发任务 目标 基于上一讲的模块划分做一个任务拆解,根据任务拆解实现功能 模块拆分 模块划分已经完成了边界的划分,边界内外职责清晰 OPM 根据模块拆分画出 OPM(Ob ...

  9. Python概述 —变量及运算符

    Python概述-变量及运算符 1.变量的构成 2.变量的类型 3.内存模型 4.变量命名规则 5. 算数与逻辑运算符 6.位运算符 #变量的构成 变量名:方便查找 变量值:实际要存储的内容 变量类型 ...

  10. docker基础——4.网络待补

    docker network ls bridge:NAT桥 host:共用宿主机namespace的UTS.IPC.Network none:只有lo,没有网卡 其他待补