在 Qt 中支持 JSON

Qt 對處理 JSON 數據提供支持。JSON 是派生自 JavaScript 的對象數據編碼格式,但現被廣泛用作 Internet 數據交換格式。

Qt 中的 JSON 支持提供易於使用的 C++ API 去剖析、修改和保存 JSON 數據。它還包含對可直接 mmap 且能非常快速訪問,以二進製格式保存數據的支持。

有關 JSON 數據格式的更多細節,可以找到在 json.org 和在 RFC-4627 .

概述

JSON 是結構化數據存儲格式。它有 6 種基本數據類型:

  • bool
  • double
  • string
  • array
  • 對象
  • null

值可以是任何以上類型。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 類

所有 JSON 類都是基於值的, 隱式共享類 .

Qt 中的 JSON 支持由這些類組成:

另請參閱 JSON 保存遊戲範例 .

QJsonArray 封裝 JSON 數組
QJsonDocument 讀寫 JSON 文檔的辦法
QJsonObject 封裝 JSON 對象
QJsonParseError 用於在 JSON 剖析期間報告錯誤
QJsonValue 把值封裝在 JSON 中
QJsonObject::const_iterator QJsonObject::const_iterator 類為 QJsonObject 提供 STL 樣式的常量迭代器
QJsonObject::iterator QJsonObject::iterator 類為 QJsonObject 提供 STL 樣式的非常量迭代器