首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QJsonObject读取JSON

用QJsonObject读取JSON
EN

Stack Overflow用户
提问于 2014-04-17 09:04:34
回答 1查看 7.2K关注 0票数 9

我正在编写几个测试函数,因为这是我第一次使用Qt,并试图了解开发我的最终项目所需的部分。以下是功能:

代码语言:javascript
复制
#include "money.h"
#include "ui_money.h"
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QString>
#include <QJsonArray>
#include <QJsonDocument>



Money::Money(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Money)
{
    ui->setupUi(this);
}

Money::~Money()
{
    delete ui;
}

void Money::on_getJsonData_clicked()
{
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)),
            this, SLOT(replyFinished(QNetworkReply*)));

    manager->get(QNetworkRequest(QUrl("http://scarjamoney.no-ip.biz")));


}

void Money::replyFinished(QNetworkReply* Reply)
{
    QString string = Reply->readAll();
    QJsonDocument document = QJsonDocument::fromJson(string.toUtf8());

    if(document.isArray()){
        QJsonArray valuesA = document.array();

        foreach (const QJsonValue write, valuesA){
            //ui->textEdit->setText("dentro");
            QString text = QString::number(write.toDouble());

            //qDebug() << "ciao" << text;

            ui->textEdit->append(text);
        }
    }
    else if(document.isObject()){
        QJsonObject valuesO = document.object();
        foreach (const QJsonValue write, valuesO){
            ui->textEdit->append("inside");
        }

        ui->textEdit->append("it's an object");
    }

}

在测试的情况下,json以数组形式回答,例如:

代码语言:javascript
复制
[1,2]

所有东西都正常工作,而不是在对以下对象的测试中:

代码语言:javascript
复制
{"firstValue":1,"secondValue":2}

我得到以下错误编译:

代码语言:javascript
复制
C:\Qt\Tools\QtCreator\bin\Money\money.cpp:53: error: variable 'QJsonObject valuesO' has initializer but incomplete type
     QJsonObject valuesO = document.object();
C:\Qt\Tools\QtCreator\bin\Money\money.cpp:53: error: invalid use of incomplete type 'class QJsonObject'
     QJsonObject valuesO = document.object();

为什么它不将我的测试json文档转换成一个对象?

提前谢谢你,詹姆斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-17 09:09:27

你忘了包括QJsonObject

代码语言:javascript
复制
#include <QJsonDocument>
#include <QJsonValue>
#include <QJsonArray>
#include <QJsonObject>
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23128904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档