前言

在公司调用一个接口,我是用的是同事封装好的方法,方法的返回值是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进行解析,特此补充

链接:c++json解析-jsoncpp的使用



码字不易,如果这篇博客对你有帮助,麻烦点赞收藏,非常感谢!有不对的地方,可以评论区交流。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐