Qt 对处理 JSON 数据提供支持。JSON 是派生自 JavaScript 的对象数据编码格式,但现被广泛用作 Internet 数据交换格式。
Qt 中的 JSON 支持提供易于使用的 C++ API 去剖析、修改和保存 JSON 数据。它还包含对可直接 mmap 且能非常快速访问,以二进制格式保存数据的支持。
有关 JSON 数据格式的更多细节,可以找到在 json.org 和在 RFC-4627 .
JSON 是结构化数据存储格式。它有 6 种基本数据类型:
值可以是任何以上类型。bool 值在 JSON 中由字符串 true (或 false) 表示。JSON 未明确指定数字的有效范围,但在 Qt 中支持被限制到有效范围和 double (双) 精度。string 可以是任何有效的 unicode 字符串。array (数组) 是值的列表,而 object (对象) 是键/值对的集合。对象中的所有键都是字符串,且对象不能包含任何重复键。
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 类都是基于值的, 隐式共享类 .
Qt 中的 JSON 支持由这些类组成:
另请参阅 JSON 保存游戏范例 .
封装 JSON 数组 | |
读写 JSON 文档的办法 | |
封装 JSON 对象 | |
QJsonObject::const_iterator 类为 QJsonObject 提供 STL 样式的常量迭代器 | |
QJsonObject::iterator 类为 QJsonObject 提供 STL 样式的非常量迭代器 | |
用于在 JSON 剖析期间报告错误 | |
把值封装在 JSON 中 |