qt读写复杂的json
时间: 2023-10-21 18:09:18 浏览: 119
Qt提供了QJsonDocument和QJsonObject等类来读写JSON格式的数据。
首先,将JSON数据解析为QJsonDocument对象:
```cpp
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData, &error);
if (error.error != QJsonParseError::NoError) {
qDebug() << "JSON parse error:" << error.errorString();
return;
}
```
其中,jsonData为JSON格式的数据。
然后,通过QJsonObject对象获取JSON中的数据:
```cpp
QJsonObject jsonObj = jsonDoc.object();
QString name = jsonObj["name"].toString();
int age = jsonObj["age"].toInt();
QJsonObject addressObj = jsonObj["address"].toObject();
QString city = addressObj["city"].toString();
QString province = addressObj["province"].toString();
```
其中,name和age为JSON中的一级字段,address为JSON中的二级字段。
最后,将数据封装为QJsonObject对象,并将其转化为JSON格式的数据:
```cpp
QJsonObject jsonObj;
jsonObj["name"] = "Tom";
jsonObj["age"] = 18;
QJsonObject addressObj;
addressObj["city"] = "Shanghai";
addressObj["province"] = "Shanghai";
jsonObj["address"] = addressObj;
QJsonDocument jsonDoc(jsonObj);
QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Indented);
```
其中,QJsonDocument::Indented表示输出的JSON数据会进行格式化,使其更易读。
阅读全文