QT中关于JSON处理的几个类

原文:
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. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值