好的,您可以使用结构体 tAITalkAwsken
来缓存解析结果。以下是一个示例代码:
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>
struct tAITalkAwsken
{
QString szSST;
int id = 0;
int score = 0;
int bos = 0;
int eos = 0;
QString keyword;
};
int main()
{
// JSON字符串
QString jsonString = R"(
{
"sst": "wakeup",
"id": 123,
"score": 1450,
"bos": 1610,
"eos": 2260,
"keyword": "ding1dong1ding1dong1"
}
)";
// 解析JSON字符串为QJsonDocument对象
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());
// 创建tAITalkAwsken结构体变量
tAITalkAwsken data;
// 检查是否解析成功并转换为QJsonObject
if (!jsonDoc.isNull() && jsonDoc.isObject())
{
QJsonObject jsonObj = jsonDoc.object();
// 判断字段存在并获取具体值
if (jsonObj.contains("sst"))
{
data.szSST = jsonObj["sst"].toString();
}
if (jsonObj.contains("id"))
{
data.id = jsonObj["id"].toInt();
}
if (jsonObj.contains("score"))
{
data.score = jsonObj["score"].toInt();
}
if (jsonObj.contains("bos"))
{
data.bos = jsonObj["bos"].toInt();
}
if (jsonObj.contains("eos"))
{
data.eos = jsonObj["eos"].toInt();
}
if (jsonObj.contains("keyword"))
{
data.keyword = jsonObj["keyword"].toString();
}
}
// 打印缓存的解析结果
qDebug() << "szSST:" << data.szSST;
qDebug() << "id:" << data.id;
qDebug() << "score:" << data.score;
qDebug() << "bos:" << data.bos;
qDebug() << "eos:" << data.eos;
qDebug() << "keyword:" << data.keyword;
return 0;
}
在这个示例中,我们定义了一个 tAITalkAwsken
结构体来缓存解析结果。然后,在解析 JSON 字符串时,将对应的字段值赋给结构体的成员变量。最后,打印出结构体中缓存的解析结果。
内容由零声教学AI助手提供,问题来源于学员提问