JSON Support in Qt
Qt 支持处理JSON数据. JSON是一种对Javascript对象数据编码格式, 但是现在被广泛用于互联网的数据交换格式.
Qt的JSON模块提供C++ API解析, 修改和保存JSON数据. 它还支持以二进制格式保存数据, 直接"mmap", 访问速度很快.
有关JSON数据的详细信息访问 json.org 和 RFC-4627.
概述
JSON 是一种存储结构化数据的格式. 它有6种基本数据类型:
- bool
- double
- string
- array
- object
- null
JSON的值可以是上述的任何类型. JSON中的bool类型数据用字符串true或false表示. JSON不能明确指定数字的有效范围, 但是Qt仅支持双精度的有效范围和精度. 字符串可以是任意有效的unicode字符串. 数组是值列表. 对象是键值对集合. 对象中所有键都是字符串, 且不包含重复的键.
在JSON中, 方括号 ([ ... ]) 表示数组, 大括号 ({ ... }) 表示对象. 数组和对象的条目用逗号分隔. 对象中的键值用冒号 (:)分隔.
下面展示一个简单 JSON 文本, 记录一个人的详细信息, 名字, 年龄, 地址, 手机号:
{ "FirstName": "John", "LastName": "Doe", "Age": 43, "Address": { "Street": "Downing Street 10", "City": "London", "Country": "Great Britain" }, "Phone numbers": [ "+44 1234567", "+44 2345678" ] }
上述示例是由5个键值对的对象组成, 其中两个值是字符串, 一个数字, 一个对象, 最后一个数组.
一个有效的 JSON 文档是一个数组或对象, 因此JSON文档总是以方括号或花括号开头.
JSON 类
所有的JSON类都是基于值的隐式共享类.
Qt的JSON模块的相关类如下:
Encapsulates a JSON array | |
Way to read and write JSON documents | |
Used to report errors during JSON parsing | |
Encapsulates a JSON object | |
QJsonObject::const_iterator class provides an STL-style const iterator for QJsonObject | |
QJsonObject::iterator class provides an STL-style non-const iterator for QJsonObject | |
Encapsulates a value in JSON |