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可以被转换成一个QVariantMap. 可以用size()来获得key-value pair的数目。insert(),remove()分别用来插入和删除pair. 可以用标准C++的迭代器模式(iterator pattern)来迭代其内容。
QJsonObject是一个隐式共享的类(implicitly shared class)。只要没有被改变过,该QJsonObject会和创建它时所基于的document共享数据。
可以将一个QJsonObject转换成文本格式,也可以反方向转换,这需要利用QJsonDocument.
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中的类型时就会返回一个默认构造的返回值。
一个JSON数组是一个value的列表(a list of values)。可以对该列表插入或删除QJsonValue.
一个QJsonArray可以被转换成或转换自一个QVariantList. 可以用size(), insert(), removeAt()来进行操作,还可以用标准C++的迭代器模式来迭代其内容。
QJsonArray是一个隐式共享的类。只要没有被改变,它可以和所创建它的document共享数据。
通过QJsonDocument可以将一个QJsonArray转换成或转换自一个文本形式的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
一个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.
相关文章推荐
- 使用qt时出现找不到模块错误
- Qt 下使用OpenCV
- QT Json解析方法
- VS集成Qt环境搭建
- spoj:QTREE3
- SPOJ QTREE 树链剖分
- Qt5获取系统文件图标,文件路径
- PyQt4百行代码自制密码管理器(一):基本框架搭建
- QtMultiMedia 之 Camera
- QtMultiMedia 之 CameraFocus
- QtMultiMedia 之 CameraImageProcessing
- QML 中的 Qt.include
- Qtcreator中经常使用快捷键总结
- 在ubuntu系统安装配置QT
- win7下安装QT开源库qwt
- 五子棋评分表算法
- QT自定义窗口标题栏实现拖动双击放大缩小
- [视觉算法] 妙算上cuda、opencv以及qt的配置
- qt线程,线程池用到的一点问题
- pyqt中使用matplotlib绘制动态曲线