Qt creator对返回数据解析

本文介绍如何使用QNetworkRequest发起网络请求并获取数据,通过QJsonDocument解析返回的JSON数据,将其转换为QByteArray和QJsonArray等类型,并进一步解析为具体的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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等转为所需数据类型;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yh_lhn_20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值