0、说明
QJsonDocument类提供了read/write JSON文档的方法。
用QJsonDocument::fromJson()方法,可以从将一个基于文本表示的JSON文件转换为QJsonDocument,用QJsonDocument::toJson()则能起到相反的用法。在此过程中的语法解析是很高效的,并且可以将JSON转换为Qt使用的二进制数据。
可以用 !isNull()来知晓被解析文档的合法性;用isArray()、isObject()来检查这个Doc是否包含一个Array或Object。如果要提取这些Array与Object,可以通过调用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包含除QVariantMap, QVariantHash, QVariantList 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 |