【QT中QJsonDomcument的常见应用】

Qt中的QJsonDocument的常见用法

  • 一、QJsonDocument简介
  • 二、QJsonDocument的两个共有类型
    • 1、DataValidation用来设置JSON文档的数据验证
    • 2、JsonFormat用来设置JSON格式样式选项
  • 三、公共函数
    • 1、QJsonArray array() const
    • 2、bool isArray() const
    • 3、bool isEmpty() const
    • 4、bool isObject() const
    • 5、QJsonObject object() const
    • 6、const char *rawData(int *size) const
    • 7、void setArray(const QJsonArray &array)
    • 8、void setObject(const QJsonObject &object)
    • 9、void swap(QJsonDocument &other)
    • 10、QByteArray toBinaryData() const
    • 11、QByteArray toJson() const
    • 12、QByteArray toJson(QJsonDocument::JsonFormat format) const
    • 13、QVariant toVariant() const
  • 四、静态公共成员
    • 1、QJsonDocument fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = Validate)
    • 2、QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
    • 3、QJsonDocument fromRawData(const char *data, int size, QJsonDocument::DataValidation validation = Validate)
    • 4、QJsonDocument fromVariant(const QVariant &variant)

一、QJsonDocument简介

  • QJsonDocument类提供了一种读写Json文档的方法。QJsonDocument是一个包装完整JSON文档的类,可以从基于UTF-8编码的文本表示和Qt自己的二进制格式读写该文档。可以使用QJsonDocument::fromJson()将JSON文档从基于文本的表示形式转换为QJsonDocument。toJson()将其转换回文本。解析器非常快速和有效,并将JSON转换为Qt.l使用的二进制表示isNull()可以查询已解析文档的有效性。可以使用isArray()和isObject()查询文档是否包含数组或对象。可以使用array()或object()检索文档中包含的数组或对象,然后读取或操作。还可以使用fromBinaryDataO从存储的二进制表示创建文档或者 fromRawData()。
  • 头文件包含以及其出现版本
Header	:	#include <QJsonDocument> 
qmake	:	QT += core
Since	:	Qt 5.0

二、QJsonDocument的两个共有类型

【QT中QJsonDomcument的常见应用】_第1张图片

1、DataValidation用来设置JSON文档的数据验证

  • 应用场景:当你需要确保解析或创建的JSON数据满足特定的数据格式要求时,可以启用数据验证选项。这对于确保数据的完整性和一致性非常有用。
enum QJsonDocument::DataValidation

QJsonDocument::Validate       				枚举值为0
QJsonDocument::BypassValidation			    枚举值为1

当参数设置为0时,QJsonDocument会在解析和创建JSON文档时执行额外的数据验证。
这些验证包括检查数字类型的范围、字符串格式的有效性等。
如果数据验证失败,QJsonDocument会抛出一个异常。
如果参数设置为1,则不会执行数据验证,默认情况下数据验证是启用的。

2、JsonFormat用来设置JSON格式样式选项

  • 应用场景:当你需要以易读的格式输出JSON文档时,可以使用JsonFormat()函数来设置缩进选项。这对于调试、日志记录或与其他系统进行交互时非常有用。
enum QJsonDocument::JsonFormat

QJsonDocument::Indented					     枚举值为0
QJsonDocument::Indented:以缩进的格式输出JSON文档,每个层级使用一定数量的空格进行缩进。
eg: {
         "Array": [
             true,
             999,
             "string"
         ],
         "Key": "Value",
         "null": null
     }

QJsonDocument::Compact						 枚举值为1
QJsonDocument::Compact:以紧凑的格式输出JSON文档,没有额外的空格或缩进。
eg: {"Array":[true,999,"string"],"Key":"Value","null":null}

三、公共函数

【QT中QJsonDomcument的常见应用】_第2张图片

1、QJsonArray array() const

QJsonArray QJsonDocument::array() const
返回文档中包含的QJsonArray。如果文档包含对象,则返回空数组。

2、bool isArray() const

bool QJsonDocument::isArray() const
如果文档包含数组,则返回true

3、bool isEmpty() const

bool QJsonDocument::isEmpty() const
如果文档不包含任何数据,则返回true

4、bool isObject() const

bool QJsonDocument::isObject() const
如果文档包含对象,则返回true

5、QJsonObject object() const

QJsonObject QJsonDocument::object() const
返回文档中包含的QJsonObject。如果文档包含数组,则返回空对象。

6、const char *rawData(int *size) const

const char *QJsonDocument::rawData(int *size) const
返回数据大小的原始二进制表示形式将包含返回数据的大小。这个方法对于将二进制形式的JSON文档流式传输到文件中很有用。

7、void setArray(const QJsonArray &array)

void QJsonDocument::setArray(const QJsonArray &array)
将array设置为此文档的主要对象。

8、void setObject(const QJsonObject &object)

void QJsonDocument::setObject(const QJsonObject &object)
将object设置为此文档的主对象。

9、void swap(QJsonDocument &other)

void QJsonDocument::swap(QJsonDocument &other)
与此交换文档。这个操作非常快,从不失败。

10、QByteArray toBinaryData() const

QByteArray QJsonDocument::toBinaryData() const
返回文档的二进制表示形式。二进制表示也是Qt内部使用的原生格式,可以非常高效和快速地进行转换。
二进制格式可以存储在磁盘上,并与其他应用程序或计算机交换。fromBinaryData()可用于将其转换回JSON文档。

11、QByteArray toJson() const

QByteArray QJsonDocument::toJson() const
将QJsonDocument转换为缩进的UTF-8编码JSON文档。

12、QByteArray toJson(QJsonDocument::JsonFormat format) const

QByteArray QJsonDocument::toJson(QJsonDocument::JsonFormat format) const
将QJsonDocument转换为提供格式的UTF-8编码JSON文档。

13、QVariant toVariant() const

QVariant QJsonDocument::toVariant() const
返回一个表示Json文档的QVariant。
如果文档是QJsonArray,返回的变量将是QVariantList;如果文档是QJsonObject,返回的变量将是QVariantMap。

四、静态公共成员

【QT中QJsonDomcument的常见应用】_第3张图片

1、QJsonDocument fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = Validate)

 QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = Validate)
 从数据创建一个QJsonDocument。验证决定在使用数据之前是否检查数据的有效性。
 默认情况下,对数据进行验证。如果数据无效,则该方法返回空文档。

2、QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = nullptr)

 QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
 将json解析为UTF-8编码的json文档,并从中创建QJsonDocument。
 如果解析成功,返回一个有效的(非空的)QJsonDocument。
 如果失败,返回的文档将为空,并且可选的error变量将包含有关错误的进一步详细信息。

3、QJsonDocument fromRawData(const char *data, int size, QJsonDocument::DataValidation validation = Validate)

QJsonDocument QJsonDocument::fromRawData(const char *data, int size, QJsonDocument::DataValidation validation = Validate)
创建一个QJsonDocument,它使用来自data的第一个大小字节。
它假设数据包含二进制编码的JsoN文档。
创建的文档不拥有数据的所有权,调用者必须保证只要任何QJsonDocument、QJsonObject或QJsonArray仍然引用数据,数据就不会被删除或修改。
数据必须对齐到一个4字节的边界。验证决定在使用数据之前是否检查数据的有效性。
默认情况下,对数据进行验证。如果数据无效,则该方法返回空文档。返回一个表示数据的QJsonDocument。

4、QJsonDocument fromVariant(const QVariant &variant)

QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
从QVariant变体创建一个QJsonDocument。如果变量包含QVariantMap、QVariantHash、QVariantList或QStringList以外的任何类型,则返回的文档无效。

你可能感兴趣的:(Qt,qt)