Qt:QJsonDocument

0、说明

QJsonDocument类提供了read/write JSON文档的方法。

QJsonDocument::fromJson()方法,可以从将一个基于文本表示的JSON文件转换为QJsonDocument,用QJsonDocument::toJson()则能起到相反的用法。在此过程中的语法解析是很高效的,并且可以将JSON转换为Qt使用的二进制数据

可以用 !isNull()来知晓被解析文档的合法性;用isArray()、isObject()来检查这个Doc是否包含一个ArrayObject。如果要提取这些ArrayObject,可以通过调用array()、object()来实现,之后就能对Array、Object进行相关操作。

一个Doc也可以从一个二进制数据中提取,使用fromBinaryData()、fromRawData()

1、模块和加载项

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

2、构造

QJsonDocument(QJsonDocument &&other) 可以从QJsonDocument、QJsonArray、QJsonObject中构造
QJsonDocument(QJsonDocument other)
QJsonDocument(QJsonArray array)
QJsonDocument(QJsonObject object)
QJsonDocument()

 

3、静态字段

类型

字段

可用数据

说明

enum DataValidation { Validate, BypassValidation } 该字段告诉QJsonDocument要转化的二进制数据是否合法,即是否可以用fromBinaryData() or fromRawData()来把二进制数据转化为QJsonDocument
enum JsonFormat { Indented, Compact } 该字段定义了由QJsonDocument产生的JSON的格式

JsonFormat

Constant Value Description
QJsonDocument::Indented 0 Defines human readable output as follows:
    {
        "Array": [
            true,
            999,
            "string"
        ],
        "Key": "Value",
        "null": null
    }
QJsonDocument::Compact 1 Defines a compact output as follows:
    {"Array":[true,999,"string"],"Key":"Value","null":null}

4、静态方法

返回值类型

方法

说明

QJsonDocument fromJson(QByteArray json, QJsonParseError *error = nullptr)

从一个QByteArray(UTF-8编码的二进制数据)中进行解析,提取QJsonDocument。

失败时,返回null,且第二个参数中会包含更多细节信息。

QJsonDocument fromVariant(QVariant variant)

从一个QVariant构造一个QJsonDocument。

如果该QVariant包含除QVariantMapQVariantHashQVariantList or QStringList以外的类型,返回的document将是非法的

 

5、实例方法

返回值类型

方法

说明

QJsonDocument &

bool

bool

QJsonValue

QJsonValue

operator=(QJsonDocument other)

operator!=(const QJsonDocument &other)

operator==(const QJsonDocument &other)

operator[](QString key)

operator[](int i)

赋值

不相等判断

相等判断

取doc[key]对应的QJsonValue,等同于调用object().value(key)。当isObject()返回false时,该方法返回的Object是Undefined类型

用doc[i]的方式访问QJsonArray中的值

QJsonArray array()

返回该Doc对应的QJsonArray。

如果包含Object时返回空Array

bool

isArray()

isEmpty()

isNull()

isObject()

当Doc包含一个array时返回true

当Doc不含任何数据时返回true

当Doc为null时返回true

当Doc包含一个Object时返回true

QJsonObject object()

返回Doc中包含的QJsonObject

如果包含一个Array返回空Object

void

setArray(QJsonArray array)

setObject(QJsonObject object)

设置array为该Doc的内容

设置object为该Doc的内容

void swap(QJsonDocument &other) 交换两个OJsonDocument的内容
QByteArray

toJson()

toJson(QJsonDocument::JsonFormat format)

将QJsonDocument转化为indented格式,UTF-8编码的JSON文件

将QJsonDocument转化为UTF-8编码,指定格式的JSON文件

QVariant toVariant()

返回该QJsonDocument对应的QVariant。

当Doc为QJsonArray,返回QVariantList

当Doc为QVariantMap,返回QJsonObject

Qt:QJsonDocument

上一篇:ESP8266通过MQTT上传数据(阿里云)


下一篇:使用Git将代码上传至Gitee码云中