QT json转结构体
时间: 2023-07-19 14:36:43 浏览: 255
在 Qt 中,可以使用 QJsonDocument 类将 JSON 数据转换为 QVariant 或 QJsonObject 对象,然后再将其转换为结构体。下面是一个简单的示例:
假设我们有以下 JSON 数据:
```json
{
"name": "张三",
"age": 20,
"address": {
"province": "广东",
"city": "深圳"
}
}
```
我们可以使用下面的代码将其转换为结构体:
```cpp
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>
struct Address {
QString province;
QString city;
};
struct Person {
QString name;
int age;
Address address;
};
int main()
{
QString json = "{\"name\":\"张三\",\"age\":20,\"address\":{\"province\":\"广东\",\"city\":\"深圳\"}}";
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
if (!doc.isNull()) {
if (doc.isObject()) {
QJsonObject obj = doc.object();
Person p;
p.name = obj.value("name").toString();
p.age = obj.value("age").toInt();
QJsonObject addressObj = obj.value("address").toObject();
Address address;
address.province = addressObj.value("province").toString();
address.city = addressObj.value("city").toString();
p.address = address;
qDebug() << "name:" << p.name << "age:" << p.age << "province:" << p.address.province << "city:" << p.address.city;
}
}
return 0;
}
```
运行上述代码将输出以下结果:
```
name: "张三" age: 20 province: "广东" city: "深圳"
```
在这个示例中,我们首先将 JSON 数据解析为 QJsonDocument 对象,然后使用 toObject() 方法将其转换为 QJsonObject 对象。接下来,我们将 QJsonObject 中的值分别赋值给结构体中的成员变量,并将嵌套的 JSON 对象转换为嵌套的结构体。
阅读全文