下面將通過一個實例介紹如何解析json文件,json文件內容如下:
{
"server_time":1585229373,
"suggest_list":
[
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦 學生"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦 少女"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦超薄"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦遊戲本"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦貼紙"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦 打遊戲"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦鍵盤保護膜"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦 家用"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦蘋果"
}
},
{
"item_type":0,
"item_data":
{
"suggestion":"筆記本電腦聯想"
}
}
],
"query":"筆記本電腦",
"sug_sn":"760745463",
"suggest":
[
"筆記本電腦 學生",
"筆記本電腦 少女",
"筆記本電腦超薄",
"筆記本電腦遊戲本",
"筆記本電腦貼紙",
"筆記本電腦 打遊戲",
"筆記本電腦鍵盤保護膜",
"筆記本電腦 家用",
"筆記本電腦蘋果",
"筆記本電腦聯想"
]
}
解析代碼如下:
// 解析json文件
QFile file(":/data.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QString jsonValue= file.readAll();
file.close();
// 解析JSON字符串
QJsonParseError parseJsonErr;
QJsonDocument document = QJsonDocument::fromJson(jsonValue.toUtf8(),&parseJsonErr);
if(!(parseJsonErr.error == QJsonParseError::NoError))
{
qDebug()<< tr("解析json文件錯誤!");
return;
}
QJsonObject jsonObject = document.object();
qDebug()<< "server_time =" << jsonObject["server_time"].toInt();
if(jsonObject.contains(QStringLiteral("suggest_list")))
{
QJsonValue suggest_listValue = jsonObject.value(QStringLiteral("suggest_list"));
if(suggest_listValue.isArray())
{
QJsonArray array = suggest_listValue.toArray();
for(int i = 0; i < array.size(); i++)
{
QJsonObject itemObject = array.at(i).toObject();
if(itemObject.contains(QStringLiteral("item_type")))
{
QJsonValue itemTypeValue = itemObject.value(QStringLiteral("item_type"));
QJsonObject itemTypeObject = itemTypeValue.toObject();
qDebug()<< "item_type = " << itemTypeObject["item_type"].toInt();
}
if(itemObject.contains(QStringLiteral("item_data")))
{
QJsonValue itemDataValue = itemObject.value(QStringLiteral("item_data"));
QJsonObject itemDataObject = itemDataValue.toObject();
qDebug()<< "suggestion =" << itemDataObject["suggestion"].toString();
}
}
}
}
qDebug()<< "query =" << jsonObject["query"].toString();
qDebug()<< "sug_sn =" << jsonObject["sug_sn"].toString();
if(jsonObject.contains(QStringLiteral("suggest")))
{
QJsonArray subArray = jsonObject.value(QStringLiteral("suggest")).toArray();
for(int i = 0; i < subArray.size(); i++)
{
qDebug() << subArray.at(i).toString();
}
}