本页内容

Qt 中的 JSON 支持

Qt 提供了处理 JSON 数据的支持。JSON 是一种源自 JavaScript 的对象数据编码格式,现已成为互联网上广泛使用的数据交换格式。

Qt 中的 JSON 支持提供了一个易于使用的 C++ API,用于解析、修改和保存 JSON 数据。

有关 JSON 数据格式的更多详细信息,请访问json.org并参阅RFC 8259。

概述

JSON 是一种用于存储结构化数据的格式。它有 6 种基本数据类型:

  • bool
  • double
  • string
  • array
  • object
  • null

一个值可以是上述任何一种类型。布尔值在 JSON 中由字符串 true 或 false 表示。JSON 并未明确规定数字的有效范围,但 Qt 中的支持仅限于 double 类型的有效范围和精度。 字符串可以是任何有效的 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 类都是基于值的、隐式共享的类。

Qt 中对 JSON 的支持包含以下类:

另请参阅 “保存和加载游戏”。

QJsonArray

封装一个 JSON 数组

QJsonDocument

读写 JSON 文档的方法

QJsonObject

封装一个 JSON 对象

QJsonObject::const_iterator

QJsonObject::const_iterator 类为 QJsonObject 提供了一个 STL 风格的 const 迭代器

QJsonObject::iterator

QJsonObject::iterator 类为 QJsonObject 提供了一个 STL 风格的非 const 迭代器

QJsonParseError

用于在 JSON 解析过程中报告错误

QJsonValue

封装 JSON 中的值

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.