在Qt中解析带有数组的JSON可以使用QJsonDocument和QJsonArray类。以下是一个示例代码,展示了如何解析带有数组的JSON数据:
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// JSON字符串
QString jsonString = "{\"name\": \"John\", \"age\": 30, \"hobbies\": [\"reading\", \"coding\", \"sports\"]}";
// 解析JSON字符串为QJsonDocument对象
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8(), &error);
if (error.error != QJsonParseError::NoError) {
qWarning() << "Failed to parse JSON:" << error.errorString();
return -1;
}
// 检查是否为Object类型
if (!jsonDoc.isObject()) {
qWarning() << "JSON is not an object";
return -1;
}
// 获取根节点对象
QJsonObject jsonObj = jsonDoc.object();
// 获取name和age字段值
QString name = jsonObj["name"].toString();
int age = jsonObj["age"].toInt();
qDebug() << "Name:" << name;
qDebug() << "Age:" << age;
// 获取hobbies字段值(数组)
if(jsonObj.contains("hobbies") && jsonObj["hobbies"].isArray()){
QJsonArray hobbiesArray = jsonObj["hobbies"].toArray();
QStringList hobbiesList;
for(const auto& hobby : hobbiesArray){
hobbiesList.append(hobby.toString());
}
qDebug() << "Hobbies:" << hobbiesList;
}
return app.exec();
}
以上代码将会输出以下结果:
Name: "John"
Age: 30
Hobbies: ("reading", "coding", "sports")
这个示例演示了如何解析带有数组的JSON数据,并将数组中的值提取出来。你可以根据自己的需要对示例代码进行修改和扩展。同样,记得在项目文件(.pro)中添加 QT += core
来引入必要的模块。
内容由零声教学AI助手提供,问题来源于学员提问