• 14186阅读
  • 4回复

Qt5 HTTP请求JSON数据及解析测试代码 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2013-03-16
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-03-16) —
关键词: Qt5JSON
  1.     QNetworkAccessManager manager;
  2.     QNetworkRequest req;
  3.     req.setUrl(QUrl("http://localhost:52280/?c=base&a=invlist"));
  4.     req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
  5.     QNetworkReply *reply = manager.post(req, QByteArray("{}"));
  6.     QEventLoop ev;
  7.     connect(reply, SIGNAL(finished()), &ev, SLOT(quit()));
  8.     ev.exec(QEventLoop::ExcludeUserInputEvents);
  9.     if (reply->error() == QNetworkReply::NoError)
  10.     {
  11.         QByteArray ba = reply->readAll();
  12.         QJsonParseError jsonpe;
  13.         QJsonDocument json = QJsonDocument::fromJson(ba, &jsonpe);
  14.         if (jsonpe.error == QJsonParseError::NoError)
  15.         {
  16.             if (json.isObject())
  17.             {
  18.                 QJsonObject obj = json.object();
  19.                 if (obj.contains("error"))
  20.                 {
  21.                     qDebug() << "error:" << obj["error"];
  22.                 }
  23.                 else
  24.                 {
  25.                     QJsonArray jarray = obj["invlist"].toArray();
  26.                     for (int row = 0; row < jarray.size(); row++)
  27.                     {
  28.                         qDebug() << "====Row[" << row << "] Start===================";
  29.                         QJsonObject jobj = jarray[row].toObject();
  30.                         for (QJsonObject::Iterator it = jobj.begin();
  31.                              it != jobj.end(); it++)
  32.                         {
  33.                             qDebug() << it.key() << " => " << it.value();
  34.                         }
  35.                     }
  36.                 }
  37.             }
  38.             else
  39.             {
  40.                 qDebug() << "error, shoud json object";
  41.             }
  42.         }
  43.         else
  44.         {
  45.             qDebug() << "error:" << jsonpe.errorString();
  46.         }
  47.     }
  48.     else
  49.     {
  50.         qDebug() << "error:" << reply->errorString();
  51.     }
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jeffreylee

只看该作者 1楼 发表于: 2013-03-16
正需要这个,还没来得及看文档,先看你的例程了,以前Qt解析json用的是一个个人开发的QJson类,现在Qt5自身支持了,方便多了。
离线aqitata817
只看该作者 2楼 发表于: 2013-03-23
尽量用官方的库,看看学习!

只看该作者 3楼 发表于: 2013-12-10
最近正要用到这个  希望楼主教教啊 QQ392139105 谢谢了!
离线lengyuehui

只看该作者 4楼 发表于: 2014-02-08
神人呀!
正在找这样的资源!
楼主可不可以做个demo上传一下供大家下载呀!
快速回复
限100 字节
 
上一个 下一个