1.连接返回数据设为data
返回数据类型使用QByteArray接受
即
QNetworkRequest request(QUrl("源网址"));
request.setRawHeader(QByteArray("Content-Type"),QByteArray("header"));
//header为响应头中连接类型
QEventLoop evenloop;
QNetworkReply *reply = manager->post(request,body.toUtf8());//body为表单
connect(reply,SIGNAL(finished()),&evenloop,SLOT(quit()));
evenloop.exec(QEventLoop::ExcludeUserInputEvents);
QbyteArray data = reply->readAll();
2.对返回数据进行文件解析
创建一个QJsonParseError错误对象,对文件数据解析进行结果判断,增强代码健壮性。
使用QJsongDocument类中的fromJson成员方法对文件数据进行解析,传入参数为QByteArray数据与错误对象地址,使用错误对象中成员变量NoError对错误对象中的成员错误方法进行判断。
QJsonParseError error;
QJsonDocument jsonDocument = QJsonDocument::fromJson(data,&error);
if (error.error != QJsonParseError::NoError)
{
qDebug() << "解析json失败,错误码为:" << error.errorString();
return ;
}
3.文件解析数据解析为数组
使用QJsonArray创建对象接收调用QJsondocument中成员方法array()转化为数组Json数据存储。
QJsonArray jsoncarray = jsonDocument.array();
数组中数据遍历由循环控制语句进行遍历。
4.数组转为对象,对象转为所需类型
for (int i = 0; i < jsonarray.size(); ++i)
{
QJsonObject jsonObject = jsonarray[i].toObject();
QString id = QString::number(jsonObject["id"].toInt());
//string 中number方法将字符串转为整型数据
}
使用QJsonArray中成员方法toObject可以将数组Json数据转为对象数据;
再由调用QJsonObject中成员方法toInt或toString等转为所需数据类型;