qt 解析json数据
时间: 2023-11-15 12:05:05 浏览: 35
Qt提供了QJsonDocument和QJsonObject两个类来解析JSON数据。下面是一个简单的例子:
```cpp
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
// JSON数据
QString jsonStr = "{\"name\":\"Tom\",\"age\":18,\"hobbies\":[\"reading\",\"running\"]}";
// 解析JSON数据
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject jsonObj = jsonDoc.object();
// 获取数据
QString name = jsonObj.value("name").toString();
int age = jsonObj.value("age").toInt();
QJsonArray hobbies = jsonObj.value("hobbies").toArray();
// 遍历数组
foreach (const QJsonValue &value, hobbies) {
qDebug() << value.toString();
}
```
在这个例子中,我们首先定义了一个JSON字符串,然后使用QJsonDocument::fromJson()方法将其转换为QJsonDocument对象,再使用QJsonDocument::object()方法将其转换为QJsonObject对象。接着,我们可以使用QJsonObject::value()方法获取JSON数据中的值,并将其转换为QString、int或QJsonArray等类型。如果值是一个数组,我们可以使用QJsonArray::foreach()方法遍历其中的元素。
需要注意的是,如果JSON数据格式不正确,解析可能会失败。因此,建议在解析之前先使用QJsonDocument::fromJson()方法的返回值判断是否解析成功。