QJsonDocument类

QJsonDocument类提供了一种读取和写入JSON文档的方法。更多...

头文件 #include <QJsonDocument>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

注意:此类中所有函数都是重入的

公共类型

枚举JsonFormat { Indented, Compact }

公共函数

QJsonDocument()
QJsonDocument(const QJsonObject &object)
QJsonDocument(const QJsonArray &array)
QJsonDocument(const QJsonDocument &other)
QJsonDocument(QJsonDocument &&other)
~QJsonDocument()
QJsonArrayarray() const
boolisArray() const
boolisEmpty() const
boolisNull() const
boolisObject() const
QJsonObjectobject() const
voidsetArray(const QJsonArray &array)
voidsetObject(const QJsonObject &object)
voidswap(QJsonDocument &other)
QByteArraytoJson(QJsonDocument::JsonFormat format = Indented) const
QVarianttoVariant() const
booloperator!=(const QJsonDocument &other) const
QJsonDocument &operator=(const QJsonDocument &other)
QJsonDocument &operator=(QJsonDocument &&other)
booloperator==(const QJsonDocument &other) const
const QJsonValueoperator[](const QString &key) const
const QJsonValueoperator[](QStringView key) const
const QJsonValueoperator[](QLatin1StringView key) const
const QJsonValueoperator[](qsizetype i) const

静态公共成员

QJsonDocumentfromJson(const QByteArray &json, QJsonParseError *error = nullptr)
QJsonDocumentfromVariant(const QVariant &variant)

详细说明

QJsonDocument是一个类,它可以封装整个JSON文档,并可以从UTF-8编码的文本表示中读取和写入此文档。

可以使用QJsonDocument::fromJson()将JSON文档从文本表示转换为QJsonDocument。使用toJson()将其转换回文本。解析器非常快速且高效,可以将JSON转换为Qt使用的二进制表示。

可以使用!isNull()查询解析的文档的有效性。

可以使用isArray()和isObject()查询文档是否包含数组或对象。可以使用array()或object()检索文档中包含的数组或对象,然后进行读取或操作。

也请参阅Qt中的JSON支持保存和加载游戏

成员类型文档

enum QJsonDocument::JsonFormat

此值定义了使用toJson()转换为QJsonDocument时生成的JSON字节数组的格式。

常量描述
QJsonDocument::Indented0定义以下可读性输出
    {
        "Array": [
            true,
            999,
            "string"
        ],
        "Key": "Value",
        "null": null
    }
QJsonDocument::Compact1定义以下紧凑输出
    {"Array":[true,999,"string"],"Key":"Value","null":null}

成员函数文档

QJsonDocument::QJsonDocument()

构造一个空且无效的文档。

[explicit] QJsonDocument::QJsonDocument(const QJsonObject &object)

对象创建QJsonDocument。

[explicit] QJsonDocument::QJsonDocument(const QJsonArray &array)

数组构造QJsonDocument。

QJsonDocument::QJsonDocument(const QJsonDocument &other)

创建其他文档的副本。

[noexcept] QJsonDocument::QJsonDocument(QJsonDocument &&other)

其他文档移动构造为QJsonDocument。

[noexcept] QJsonDocument::~QJsonDocument()

删除文档。

使用fromRawData设置的二进制数据集不会被释放。

QJsonArray QJsonDocument::array() const

返回文档中的QJsonArray

如果文档包含对象,则返回空数组。

也请参阅isArray(),object()和setArray()。

[静态] QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error = nullptr)

将UTF-8编码的JSON文档解析为JSON对象,并从中创建一个QJsonDocument

如果解析成功,返回一个有效(非空)的QJsonDocument。如果失败,返回的文档将为空,可选的error变量将包含有关错误的更多详细信息。

另请参阅toJson(),QJsonParseError,以及isNull

[静态] QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)

QVariant variant创建一个QJsonDocument

如果variant包含的类型不是QVariantMapQVariantHashQVariantListQStringList,则返回的文档无效。

另请参阅toVariant

bool QJsonDocument::isArray() const

如果文档包含数组,则返回true

另请参阅array()和isObject

bool QJsonDocument::isEmpty() const

如果文档不包含任何数据,则返回true

bool QJsonDocument::isNull() const

如果此文档为空,则返回true

空文档是通过默认构造函数创建的。

从UTF-8编码的文本或二进制格式创建的文档在解析过程中进行验证。如果验证失败,则返回的文档也将为空。

bool QJsonDocument::isObject() const

如果文档包含对象,则返回true

另请参阅object()和isArray

QJsonObject QJsonDocument::object() const

返回文档中包含的QJsonObject

如果文档包含数组,则返回一个空对象。

另请参阅isObjectarraysetObject

void QJsonDocument::setArray(const QJsonArray &array)

array设置为文档的主要对象。

另请参阅setObject()和array

void QJsonDocument::setObject(const QJsonObject &object)

object设置为该文档的主对象。

另请参阅setArray() 和 object()。

[noexcept] void QJsonDocument::swap(QJsonDocument &other)

与这个文档交换other。此操作非常快且从不失败。

QByteArray QJsonDocument::toJson(QJsonDocument::JsonFormat format = Indented) const

QJsonDocument转换为UTF-8编码的JSON文档,格式为提供的format

另请参阅fromJson() 和 JsonFormat

QVariant QJsonDocument::toVariant() const

返回表示JSON文档的QVariant

如果文档是QJsonArray,返回的变体将是QVariantList;如果文档是QJsonObject,则是一个QVariantMap

另请参阅fromVariant() 和 QJsonValue::toVariant

bool QJsonDocument::operator!=(const QJsonDocument &other) const

如果other与该文档不相等,则返回true

QJsonDocument &QJsonDocument::operator=(const QJsonDocument &other)

other文档分配给此QJsonDocument。返回对该对象的引用。

[noexcept] QJsonDocument &QJsonDocument::operator=(QJsonDocument &&other)

移动分配other到该文档。

bool QJsonDocument::operator==(const QJsonDocument &other) const

如果other文档与该文档相等,则返回true

const QJsonValue QJsonDocument::operator[](const QString &key) const

返回表示关键key值的QJsonValue

相当于调用object().value(key)。

如果键不存在,或者如果isObject()为false,则返回的QJsonValueQJsonValue::Undefined

另请参阅 QJsonValueQJsonValue::isUndefined()和QJsonObject

const QJsonValue QJsonDocument::operator[](QStringView key) const

这是一个重载函数。

const QJsonValue QJsonDocument::operator[](QLatin1StringView key) const

这是一个重载函数。

const QJsonValue QJsonDocument::operator[](qsizetype i) const

返回一个表示索引iQJsonValue

等同于调用array().at(i)。

如果i超出范围,或者isArray()是false,则返回的QJsonValueQJsonValue::Undefined

另请参阅 QJsonValueQJsonValue::isUndefined()和QJsonArray

© 2024 Qt公司。本文件中的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款授权的。Qt及其相应徽标是芬兰的Qt公司及其在全球的子lighet和附属公司的商标。所有其他商标均为其各自所有者的财产。