qjson解析json文件
时间: 2023-06-23 13:46:25 浏览: 47
使用 QJson 库可以解析 JSON 文件。以下是解析 JSON 文件的基本步骤:
1. 包含 QJson 库头文件:
```cpp
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
```
2. 从文件中读取 JSON 数据:
```cpp
QFile file("data.json");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QByteArray jsonData = file.readAll();
file.close();
```
3. 将 JSON 数据解析成 QJsonDocument 对象:
```cpp
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
```
4. 从 QJsonDocument 对象中获取 QJsonObject 或 QJsonArray:
```cpp
if (jsonDoc.isObject()) {
QJsonObject jsonObj = jsonDoc.object();
// 处理 QJsonObject 对象
} else if (jsonDoc.isArray()) {
QJsonArray jsonArray = jsonDoc.array();
// 处理 QJsonArray 对象
}
```
5. 从 QJsonObject 或 QJsonArray 中获取具体的 JSON 数据:
```cpp
// 从 QJsonObject 中获取字符串数据
QString name = jsonObj["name"].toString();
// 从 QJsonArray 中获取整数数据
int age = jsonArray[0].toInt();
```
完整的代码示例:
```cpp
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QFile>
void parseJsonFile(const QString &fileName) {
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QByteArray jsonData = file.readAll();
file.close();
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
if (jsonDoc.isObject()) {
QJsonObject jsonObj = jsonDoc.object();
QString name = jsonObj["name"].toString();
int age = jsonObj["age"].toInt();
qDebug() << "Name: " << name << ", Age: " << age;
} else if (jsonDoc.isArray()) {
QJsonArray jsonArray = jsonDoc.array();
foreach (const QJsonValue & value, jsonArray) {
int age = value.toInt();
qDebug() << "Age: " << age;
}
}
}
```