qt json 模块怎么使用
时间: 2023-12-08 21:06:04 浏览: 83
如何使用QT
5星 · 资源好评率100%
Qt提供了QJsonDocument、QJsonObject、QJsonArray等类,可以方便地对JSON数据进行解析、生成和操作。
下面是一个简单的例子,演示如何使用Qt的JSON模块解析一个JSON字符串:
```c++
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
int main()
{
QString jsonStr = "{\"name\":\"Alice\", \"age\":20, \"scores\":[85, 90, 95]}";
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr.toUtf8());
if(jsonDoc.isNull()){
qWarning() << "Parse failed";
return -1;
}
if(jsonDoc.isObject()){
QJsonObject jsonObj = jsonDoc.object();
if(jsonObj.contains("name") && jsonObj["name"].isString()){
QString name = jsonObj["name"].toString();
qDebug() << "name:" << name;
}
if(jsonObj.contains("age") && jsonObj["age"].isDouble()){
int age = jsonObj["age"].toInt();
qDebug() << "age:" << age;
}
if(jsonObj.contains("scores") && jsonObj["scores"].isArray()){
QJsonArray scoresArray = jsonObj["scores"].toArray();
qDebug() << "scores:";
for(int i = 0; i < scoresArray.size(); i++){
if(scoresArray[i].isDouble()){
int score = scoresArray[i].toInt();
qDebug() << score;
}
}
}
}
return 0;
}
```
在上面的例子中,首先定义了一个JSON格式的字符串jsonStr,然后使用QJsonDocument::fromJson()函数将其解析为一个QJsonDocument对象。
接着,使用QJsonDocument对象的成员函数来判断该JSON数据的类型,并进行相应的解析操作。如果是一个JSON对象,则调用QJsonObject对象的成员函数来获取其中的值。
需要注意的是,在解析JSON数据时,需要先判断该值是否存在并且是否是正确的类型,才能进行相应的操作,否则会导致程序崩溃或数据不正确。
除了解析JSON数据之外,Qt的JSON模块还可以用于生成JSON数据和操作JSON数据,具体用法可以参考Qt的官方文档。
阅读全文