前言
在公司调用一个接口,我是用的是同事封装好的方法,方法的返回值是string,于是我就想到QString能否转为JSON数据,并对其进行解析。qt中通过QJsonDocument将QString转为JSON,只要QString能转为json,很多解析json数据的问题自然就好解决了。
案例:
{
"StatusCode": 200,
"ErrCode": 0,
"Msg": "success",
"Data": [
{
"SchoolID": "S-05061411",
"schoolName": "东南大学",
"SchoolType": 5
}
]
}
代码如下:(解析出SchoolID和schoolName)
QJsonParseError jsonError;
QJsonDocument jsonDoc(QJsonDocument::fromJson(schoolInfo.toStdString().data(), &jsonError)); //schoolInfo为上面这串数据的QString类型的变量
if(jsonError.error == QJsonParseError::NoError){
QJsonObject rootObj = jsonDoc.object();
//------读者根据实际情况修改
QJsonArray data = rootObj.value("Data").toArray(); //获取Data,Data中是数组,所以toArray()
for(int i=0;i<data.size();i++){ //解析数组
QJsonObject schoolInfo=data.at(i).toObject(); //数组中每一项又是一个json
QString schoolId = schoolInfo.value("SchoolID").toString(); //解析字符串
QString schoolName_1 = schoolInfo.value("schoolName").toString(); //解析中文
int schoolType = schoolInfo.value("SchoolType").toInt(); //解析数字
}
//------读者根据实际情况修改
}else {
qDebug() << "json error!" << jsonError.errorString(); //json数据有问题
}
注意:代码是没有问题的,如果报错的话可能是因为没有插入头文件
---
2022.8.1更新:
实际上c++通过jsoncpp库也能对json进行解析,特此补充
码字不易,如果这篇博客对你有帮助,麻烦点赞收藏,非常感谢!有不对的地方,可以评论区交流。