JSON Support in Qt

Qt 支持处理JSON数据. JSON是一种对Javascript对象数据编码格式, 但是现在被广泛用于互联网的数据交换格式.

Qt的JSON模块提供C++ API解析, 修改和保存JSON数据. 它还支持以二进制格式保存数据, 直接"mmap", 访问速度很快.

有关JSON数据的详细信息访问 json.orgRFC-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模块的相关类如下:

参见 JSON Save Game Example.

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