目录
1. QJsonObject
QJsonObject 是Qt的类之一,用于表示 JSON 对象。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于在不同系统之间传输和存储数据。
使用 QJsonObject,你可以创建、操作和访问 JSON 对象中的键值对数据。下面是一些常见的 QJsonObject 操作:
-
创建一个空的 JSON 对象:
QJsonObject obj; -
添加键值对数据到 JSON 对象:
obj["name"] = "John"; obj["age"] = 30; obj["email"] = "john@example.com"; -
从 JSON 对象中获取键值对数据:
QString name = obj["name"].toString(); int age = obj["age"].toInt(); QString email = obj["email"].toString(); -
检查 JSON 对象中是否包含特定的键:
if (obj.contains("email")) { // JSON 对象包含键 "email" } -
从 JSON 对象中移除特定的键值对数据:
obj.remove("age"); -
将 JSON 对象转换为 JSON 字符串:
QJsonDocument doc(obj); QString jsonString = doc.toJson(QJsonDocument::Compact);
QJsonObject 还支持嵌套使用,即一个 JSON 对象中可以包含另一个 JSON 对象。你可以根据需要进行深度层级的嵌套。
使用 QJsonObject,你可以方便地创建、操作和访问 JSON 数据。这对于与 Web 服务交互、保存和读取配置文件等情景非常有用。记得在使用时先包含 QJsonObject 头文件 (#include <QJsonObject>)。
2 QJsonDocument
QJsonDocument 是Qt的一个类,用于表示和操作 JSON 文档。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于在不同系统之间传输和存储数据。
QJsonDocument 提供了将 JSON 数据解析成树状结构、从树状结构中生成 JSON 数据以及进行其他操作的方法。以下是一些常见的 QJsonDocument 操作:
-
将 JSON 字符串解析为 QJsonDocument:
QString jsonString = "{\"name\": \"John\", \"age\": 30}"; QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8()); -
将 QJsonDocument 转换为 JSON 字符串:
QString jsonString = doc.toJson(QJsonDocument::Compact);这里的
Compact参数表示将生成的 JSON 字符串压缩为紧凑的形式,也可以选择Indented参数来添加缩进和换行,使其更易读。 -
获取 QJsonDocument 的根对象 QJsonObject:
QJsonObject obj = doc.object(); -
创建一个空的 QJsonDocument:
QJsonDocument doc; -
将 QJsonDocument 转换为二进制数据进行存储或发送:
QByteArray jsonData = doc.toBinaryData(); -
从二进制数据中解析 QJsonDocument:
QJsonDocument doc = QJsonDocument::fromBinaryData(jsonData);
QJsonDocument 还提供了其他一些有用的方法,例如设置和获取文档的元数据,合并多个 JSON 文档等。
使用 QJsonDocument,你可以方便地解析、生成和操作 JSON 数据。这对于与 Web 服务交互、处理配置文件或进行数据交换等情景非常有用。记得在使用时先包含 QJsonDocument 头文件 (#include <QJsonDocument>)。
3 JSON本文格式
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简洁、易读和易解析的特点。它通常被用于在不同系统之间传输和存储数据。
JSON 文本由键值对构成,使用大括号 {} 表示对象(Object),每个键值对之间使用逗号 , 分隔。键值对由键(Key)和值(Value)组成,使用冒号 : 分隔。
以下是使用 JSON 文本的基本语法规则:
-
对象(Object):
- 使用大括号
{}包围。 - 键值对之间使用逗号
,分隔。 - 键(Key)必须是一个字符串(String)。
- 值(Value)可以是字符串、数值、布尔值、对象、数组或 null。
{ "name": "John", "age": 30, "hasPets": true, "address": { "street": "123 Main St", "city": "New York" }, "favoriteFruits": ["apple", "banana", "orange"] } - 使用大括号
-
数组(Array):
- 使用方括号
[]包围。 - 数组中的元素之间使用逗号
,分隔。 - 元素可以是字符串、数值、布尔值、对象、数组或 null。
["apple", "banana", "orange"] - 使用方括号
-
字符串(String):
- 使用双引号
"包围。 - 可以包含任意 Unicode 字符。
"Hello, World!" - 使用双引号
-
数值(Number):
- 可以是整数或浮点数。
42 3.14 -
布尔值(Boolean):
- 只有两个可能的值:true 或 false。
true false -
空值(Null):
- 表示缺少值时使用的特殊值。
null
JSON 文本可以被解析和生成以在不同的编程语言和平台之间传输和处理数据。许多编程语言都提供了内置的 JSON 解析和生成库来处理 JSON 数据。
4. JSON示例
以下是几个常见的 JSON 示例,展示了不同类型的数据结构和数据组织方式:
- 简单对象:
{
"name": "John",
"age": 30,
"city": "New York"
}
- 嵌套对象:
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"postalCode": "10001"
}
}
- 数组:
{
"fruits": ["apple", "banana", "orange"]
}
- 嵌套数组:
{
"people": [
{
"name": "John",
"age": 30
},
{
"name": "Alice",
"age": 25
},
{
"name": "Bob",
"age": 35
}
]
}
- 字符串键名和空值:
{
"name": "John",
"city": null
}
- 其他数据类型:
{
"isActive": true,
"balance": 1234.56,
"numbers": [1, 2, 3],
"metadata": {
"createdAt": "2023-07-16",
"version": 1
}
}
这些 JSON 示例展示了不同的数据结构,包括简单对象、嵌套对象、数组,以及各种数据类型,例如字符串、数值、布尔值和空值。这些示例可以根据实际需求进行扩展和修改,以适应具体的数据组织和数据交换需求。
5. JASON配置文件示例
在这个示例中,配置文件分为多个部分/段落,每个部分有不同的配置项。以下是对每个部分的解释:
-
app部分包含了应用程序相关的配置项:name:应用程序的名称。version:应用程序的版本号。theme:应用程序的主题样式,可能有 “light” 或 “dark” 等选项。
-
database部分包含了数据库连接相关的配置项:host:数据库服务器的主机地址。port:数据库服务器的端口号。username:连接数据库的用户名。password:连接数据库的密码。
-
log部分包含了日志记录相关的配置项:level:日志记录的级别,如 “debug”、“info”、“warning” 等。file:日志记录输出的文件名。
通过读取和解析这个 JSON 配置文件,应用程序可以获取和使用配置信息来设定其行为和设置。可以根据实际需求添加或修改配置项,以满足特定应用程序的配置需求。
文章介绍了Qt库中的QJsonObject和QJsonDocument类,它们用于创建、操作和解析JSON对象及文档,展示了如何处理键值对、嵌套结构和配置文件示例。
627

被折叠的 条评论
为什么被折叠?



