qt json函数
时间: 2025-07-22 18:39:52 浏览: 3
### Qt 中 JSON 函数的使用方法
在 Qt 中,JSON 数据的处理主要依赖于 `QJsonDocument`、`QJsonObject`、`QJsonArray` 和 `QJsonValue` 等类。这些类提供了一个强大且易用的接口来解析、生成和操作 JSON 数据[^2]。
#### 1. 创建 JSON 对象
通过 `QJsonObject` 可以轻松创建一个 JSON 对象,并将其插入到 JSON 文档中。
```cpp
// 构建 JSON 对象
QJsonObject jsonObj;
jsonObj.insert("Name", "Qt");
jsonObj.insert("From", 1991);
jsonObj.insert("Cross Platform", true);
// 构建 JSON 文档
QJsonDocument document;
document.setObject(jsonObj);
// 转换为 QByteArray
QByteArray byteArray = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray);
qDebug() << strJson;
```
上述代码展示了如何创建一个 JSON 对象并将其转换为字符串形式的 JSON 数据[^3]。
#### 2. 解析 JSON 数据
使用 `QJsonDocument::fromJson()` 方法可以从字符串中解析 JSON 数据。
```cpp
QString jsonString = "{\"Name\":\"Qt\",\"From\":1991,\"Cross Platform\":true}";
QJsonDocument document = QJsonDocument::fromJson(jsonString.toUtf8());
if (!document.isNull()) {
if (document.isObject()) {
QJsonObject jsonObject = document.object();
QString name = jsonObject.value("Name").toString();
int fromYear = jsonObject.value("From").toInt();
bool crossPlatform = jsonObject.value("Cross Platform").toBool();
qDebug() << "Name:" << name;
qDebug() << "From Year:" << fromYear;
qDebug() << "Cross Platform:" << crossPlatform;
}
}
```
此示例演示了如何从字符串中解析 JSON 数据并提取其中的值[^4]。
#### 3. 处理 JSON 数组
如果需要处理 JSON 数组,可以使用 `QJsonArray`。
```cpp
// 构建 JSON 数组
QJsonArray jsonArray;
jsonArray.append("Item1");
jsonArray.append("Item2");
jsonArray.append("Item3");
// 构建 JSON 文档
QJsonDocument document;
document.setArray(jsonArray);
// 转换为 QByteArray
QByteArray byteArray = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray);
qDebug() << strJson;
```
这段代码展示了如何构建和输出 JSON 数组[^2]。
#### 4. 错误处理
在实际应用中,错误处理是非常重要的。以下是一个简单的错误处理示例:
```cpp
QString jsonString = "{\"Invalid\":\"Json\""; // 模拟无效的 JSON 字符串
QJsonParseError parseError;
QJsonDocument document = QJsonDocument::fromJson(jsonString.toUtf8(), &parseError);
if (parseError.error != QJsonParseError::NoError) {
qDebug() << "JSON parsing failed:" << parseError.errorString();
} else {
qDebug() << "JSON parsed successfully!";
}
```
此代码片段展示了如何捕获 JSON 解析错误并进行处理[^5]。
---
###
阅读全文
相关推荐


















