在解析字段之前,可以使用contains()
函数来检查JSON对象中是否包含特定的字段。以下是修改后的代码示例:
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>
int main()
{
// JSON字符串
QString jsonString = R"(
{
"sst": "wakeup",
"id": 0,
"score": 1450,
"bos": 1610,
"eos": 2260,
"keyword": "ding1dong1ding1dong1"
}
)";
// 解析JSON字符串为QJsonDocument对象
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());
// 检查是否解析成功并转换为QJsonObject
if (!jsonDoc.isNull() && jsonDoc.isObject())
{
QJsonObject jsonObj = jsonDoc.object();
// 判断字段存在并获取具体值
if (jsonObj.contains("sst"))
{
QString sst = jsonObj["sst"].toString();
qDebug() << "sst:" << sst;
}
if (jsonObj.contains("id"))
{
int id = jsonObj["id"].toInt();
qDebug() << "id:" << id;
}
if (jsonObj.contains("score"))
{
int score = jsonObj["score"].toInt();
qDebug() << "score:" << score;
}
if (jsonObj.contains("bos"))
{
int bos = jsonObj["bos"].toInt();
qDebug() << "bos:" << bos;
}
if (jsonObj.contains("eos"))
{
int eos = jsonObj["eos"].toInt();
qDebug() << "eos:" << eos;
}
if (jsonObj.contains("keyword"))
{
QString keyword = jsonObj["keyword"].toString();
qDebug() << "keyword:" << keyword;
}
}
return 0;
}
在这个示例中,通过使用contains()
函数来检查每个字段的存在性,确保只在字段存在时才获取其具体值。
内容由零声教学AI助手提供,问题来源于学员提问