qt5 html解析json,Qt5 HTTP请求JSON数据及解析测试代码

该代码段展示了如何使用Qt的QNetworkAccessManager进行POST请求,并处理返回的JSON数据。它设置请求头,发送空的JSON数据到指定URL,然后解析响应以检查错误和提取JSON对象。如果解析成功,它会遍历并打印JSON数组内的对象及其键值对。
摘要由CSDN通过智能技术生成

QNetworkAccessManager manager;

QNetworkRequest req;

req.setUrl(QUrl("http://localhost:52280/?c=base&a=invlist"));

req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

QNetworkReply *reply = manager.post(req, QByteArray("{}"));

QEventLoop ev;

connect(reply, SIGNAL(finished()), &ev, SLOT(quit()));

ev.exec(QEventLoop::ExcludeUserInputEvents);

if (reply->error() == QNetworkReply::NoError)

{

QByteArray ba = reply->readAll();

QJsonParseError jsonpe;

QJsonDocument json = QJsonDocument::fromJson(ba, &jsonpe);

if (jsonpe.error == QJsonParseError::NoError)

{

if (json.isObject())

{

QJsonObject obj = json.object();

if (obj.contains("error"))

{

qDebug() << "error:" << obj["error"];

}

else

{

QJsonArray jarray = obj["invlist"].toArray();

for (int row = 0; row < jarray.size(); row++)

{

qDebug() << "====Row[" << row << "] Start===================";

QJsonObject jobj = jarray[row].toObject();

for (QJsonObject::Iterator it = jobj.begin();

it != jobj.end(); it++)

{

qDebug() << it.key() << " => " << it.value();

}

}

}

}

else

{

qDebug() << "error, shoud json object";

}

}

else

{

qDebug() << "error:" << jsonpe.errorString();

}

}

else

{

qDebug() << "error:" << reply->errorString();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值