您的位置:首页 > 编程语言 > Qt开发

QT中关于JSON处理的几个类

2016-02-28 13:12 471 查看
原文:

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

一个value可以是以上任何一种数据类型。另外,QJsonValue有一个特殊的flag来表示未定义类型。可以用isUndefined()来查询该flag.

可以用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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: