Qt5 HTTP获取了JSON数据,在解析时崩溃

wxf54318 2020-02-21 03:43:51
在判断isobject()时程序卡住了,如下面红字所示,请各位大人指点迷津
myclass::myclass() //构造函数
{
m_httpManager = new QNetworkAccessManager(this);
QUrl _url("http://127.0.0.1:8080/aaa");
m_httpRequest.setUrl(url);
m_httpRequest.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
connect(m_httpManager,SIGNAL(finished(QNetworkReply*)), this, SLOT(ReplyReadFunc(QNetworkReply*)));
}

void myclass::ReplyReadFunc(QNetworkReply* Reply)//接收数据槽函数
{
。。。
if(NetworkErrors ==QNetworkReply::NoError)
{
QByteArray databuff = Reply->readAll();
QJsonDocument document;
QJsonParseError ParseError;
document =QJsonDocument::fromJson(databuff,&ParseError);
if(!document.isNull() && ParseError.error == QJsonParseError::NoError)
{
if(document.isObject())//运行到此行程序挂掉
{
QJsonObject Object = document.object(); //获取文档对象
...全文
661 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxf54318 2020-02-24
  • 打赏
  • 举报
回复
即使不解析收到的JSON数据,只是定义一个常量 QString result ={ "aaa": 1, "bbb": "OK" } QJsonDocument document = QJsonDocument::fromJson(result.toUtf8(),&ParseError); if(!document.isNull() && ParseError.error == QJsonParseError::NoError) { if(document.isObject())//卡在此行 { 仍然解析不了,不知道哪里用错了
wxf54318 2020-02-24
  • 打赏
  • 举报
回复
是我后面的代码的问题
wxf54318 2020-02-22
  • 打赏
  • 举报
回复
引用 2 楼 donwmufromdying 的回复:
从逻辑上不知道为啥会崩溃。最好在debug模式看对应的调用栈
myclass是运行在一个子线程里的, document =QJsonDocument::fromJson(databuff,&ParseError);返回的document 对象 的内容是空的,document.isObject()线程会卡住
donwmufromdying 2020-02-22
  • 打赏
  • 举报
回复
从逻辑上不知道为啥会崩溃。最好在debug模式看对应的调用栈
wxf54318 2020-02-21
  • 打赏
  • 举报
回复
补充一下,收到的Json数据很简单,如下 { "aaa": 1, "bbb": "OK" }

16,229

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧