版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wyy626562203/article/details/82734920
Qt中的JSON支持
Qt为处理JSON数据提供支持。 JSON是一种编码从Javascript派生的对象数据的格式,但现在广泛用作互联网上的数据交换格式。
Qt中的JSON支持提供了一个易于使用的C++ API来解析,修改和保存JSON数据。 它还支持以二进制格式保存此数据,该格式直接“mmap”且访问速度非常快。
有关JSON数据格式的更多详细信息,请访问json.org和RFC-7159。
概述
JSON是一种存储结构化数据的格式。 它有6种基本数据类型:
- bool
- double
- string
- array
- object
- null
值可以具有上述任何类型。 布尔值由JSON中的字符串true或false表示。 JSON没有明确指定数字的有效范围,但Qt中的支持仅限于双精度的有效范围。字符串可以是任何有效的unicode字符串。 数组是值列表,对象是键/值对的集合。 对象中的所有键都是字符串,对象不能包含任何重复键。
JSON的文本表示将数组括在方括号([…])和大括号({…})中的对象中。 数组和对象中的x项用逗号分隔。 键和键之间的分隔符是冒号(:)。
一个简单的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类都是基于值的隐式共享类。
Qt中的JSON支持包含以下类:
类 | 描述 |
---|---|
QJsonArray | Encapsulates a JSON array |
QJsonDocument | Way to read and write JSON documents |
QJsonParseError | Used to report errors during JSON parsing |
QJsonObject | Encapsulates a JSON object |
QJsonObject::const_iterator | QJsonObject::const_iterator class provides an STL-style const iterator for QJsonObject |
QJsonObject::iterator | QJsonObject::iterator class provides an STL-style non-const iterator for QJsonObject |
QJsonValue | Encapsulates a value in JSON |