原文:
http://doc.qt.io/qt-5/qjsonobject.html#details
http://doc.qt.io/qt-5/qjsonvalue.html#details
http://doc.qt.io/qt-5/qjsonarray.html#details
http://doc.qt.io/qt-5/qjsondocument.html#details
QJsonObject类封装了一个JSON对象。一个JSON对象是一个包含了许多key-value pair的列表。这里的key都是unique string,而value都是QJsonValue.
一个QJsonObject可以被转换成一个QVariantMap. 可以用size()来获得key-value pair的数目。insert(),remove()分别用来插入和删除pair. 可以用标准C++的迭代器模式(iterator pattern)来迭代其内容。
QJsonObject是一个隐式共享的类(implicitly shared class)。只要没有被改变过,该QJsonObject会和创建它时所基于的document共享数据。
可以将一个QJsonObject转换成文本格式,也可以反方向转换,这需要利用QJsonDocument.
QJsonValue类封装了JSON中的值。JSON中的值有6种基本类型:
可以用type(),或isBool(), isString()等来查询value的类型。类似的,可以用toBool(), toString()等将一个value转换成存储在该value内部的类型。
Values在内部是严格的类型,和QVariant不同,这里的value不能做隐式类型转换。这意味着如果要转换成一种并非存储在value中的类型时就会返回一个默认构造的返回值。
QJsonArray类封装了一个JSON数组。
一个JSON数组是一个value的列表(a list of values)。可以对该列表插入或删除QJsonValue.
一个QJsonArray可以被转换成或转换自一个QVariantList. 可以用size(), insert(), removeAt()来进行操作,还可以用标准C++的迭代器模式来迭代其内容。
QJsonArray是一个隐式共享的类。只要没有被改变,它可以和所创建它的document共享数据。
通过QJsonDocument可以将一个QJsonArray转换成或转换自一个文本形式的JSON.
QJsonDocument类提供了一种读写JSON文档的方法。
QJsonDocument是一个包含了完整JSON文档的类,并且它可以以UTF-8编码的方式和Qt自身的二进制格式这2种方式来读写该JSON文档。
使用QJsonDocument::fromJson()可以将一个JSON文档从文本形式转换为QJsonDocument类的实例。而toJson()可以反方向转换为文本形式。解析器非常的快和高效,可以将JSON文档转成Qt使用的二进制形式。
对所解析文档的有效性可以使用 !isNull() 进行查询。
使用isArray()和isObject()可以分别查询一个文档是否包含了一个数组或一个object. 使用array()或object()可以将包含在文档中的数组或object提取出来。
使用fromBinaryData()或fromRawData()也可以从一个二进制形式中创建一个QJsonDocument.
http://doc.qt.io/qt-5/qjsonobject.html#details
http://doc.qt.io/qt-5/qjsonvalue.html#details
http://doc.qt.io/qt-5/qjsonarray.html#details
http://doc.qt.io/qt-5/qjsondocument.html#details
QJsonObject
QJsonObject类封装了一个JSON对象。一个JSON对象是一个包含了许多key-value pair的列表。这里的key都是unique string,而value都是QJsonValue.
一个QJsonObject可以被转换成一个QVariantMap. 可以用size()来获得key-value pair的数目。insert(),remove()分别用来插入和删除pair. 可以用标准C++的迭代器模式(iterator pattern)来迭代其内容。
QJsonObject是一个隐式共享的类(implicitly shared class)。只要没有被改变过,该QJsonObject会和创建它时所基于的document共享数据。
可以将一个QJsonObject转换成文本格式,也可以反方向转换,这需要利用QJsonDocument.
QJsonValue
QJsonValue类封装了JSON中的值。JSON中的值有6种基本类型:
- bool QJsonValue::Bool
- double QJsonValue::Double
- string QJsonValue::String
- array QJsonValue::Array
- object QJsonValue::Object
- null QJsonValue::Null
可以用type(),或isBool(), isString()等来查询value的类型。类似的,可以用toBool(), toString()等将一个value转换成存储在该value内部的类型。
Values在内部是严格的类型,和QVariant不同,这里的value不能做隐式类型转换。这意味着如果要转换成一种并非存储在value中的类型时就会返回一个默认构造的返回值。
QJsonArray
QJsonArray类封装了一个JSON数组。
一个JSON数组是一个value的列表(a list of values)。可以对该列表插入或删除QJsonValue.
一个QJsonArray可以被转换成或转换自一个QVariantList. 可以用size(), insert(), removeAt()来进行操作,还可以用标准C++的迭代器模式来迭代其内容。
QJsonArray是一个隐式共享的类。只要没有被改变,它可以和所创建它的document共享数据。
通过QJsonDocument可以将一个QJsonArray转换成或转换自一个文本形式的JSON.
QJsonDocument
QJsonDocument类提供了一种读写JSON文档的方法。
QJsonDocument是一个包含了完整JSON文档的类,并且它可以以UTF-8编码的方式和Qt自身的二进制格式这2种方式来读写该JSON文档。
使用QJsonDocument::fromJson()可以将一个JSON文档从文本形式转换为QJsonDocument类的实例。而toJson()可以反方向转换为文本形式。解析器非常的快和高效,可以将JSON文档转成Qt使用的二进制形式。
对所解析文档的有效性可以使用 !isNull() 进行查询。
使用isArray()和isObject()可以分别查询一个文档是否包含了一个数组或一个object. 使用array()或object()可以将包含在文档中的数组或object提取出来。
使用fromBinaryData()或fromRawData()也可以从一个二进制形式中创建一个QJsonDocument.