JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
JSON解析要包含如下头文件:
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
JSON串如下:
//json串
{
"data": {
"list":[
{"id":"20200602221529"},
{"id":"20200602203158"},
{"id":"20200602175752"}
],
"pagecnt":5,
"pageindex":2
},
"result":0,
"type":25
}
Qt实现代码:
QJsonParseError parseJsonErr;
// 转化为JSON文档
QJsonDocument jsonDoc = QJsonDocument::fromJson(response.toUtf8(), &parseJsonErr);
// 解析未发生错误
if(parseJsonErr.error == QJsonParseError::NoError)
{
QJsonObject rootObj = jsonDoc.object(); // 转化为root对象
QJsonValue rootValue = rootObj.value("data"); // 获取指定key对应的value,
QJsonObject arrObject = rootValue.toObject(); // 再将值转换为obj:上一级key对应的值实际为数组对象
QJsonValue arrValue = arrObject.value("list");
if(arrValue.isArray()) // 判断获取的QJsonValue对象是不是数组结构
{
QJsonArray array = arrValue.toArray();
for(int i=0;i<array.size();i++)
{
QJsonValue idValue = array.at(i);
QJsonObject idObject = idValue.toObject();
QString id = idObject["id"].toString();
qDebug() <<"id=" <<id;
}
}
}