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的两个共有类型
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}
三、公共函数
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。
四、静态公共成员
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以外的任何类型,则返回的文档无效。