C ++ Qt无法正确解析JSON数组

时间:2018-11-01 14:37:50

标签: c++ json qt qt-creator

我正在尝试用Qt解析json,但没有成功。这是我从服务器获得的输出:

[{"anni":2019},{"anni":2018},{"anni":2017}]

是从这个简单的php生成的:

header('Content-Type: application/json');
echo json_encode($data);

$data是一个包含您在上面看到的值的数组。我在Qt 5.11.2中使用了这段代码:

void MainWindow::showYears() {   

    //reply is a QNetworkReply* reply;
    if (reply->error() != QNetworkReply::NoError) {
        //some error managment
    } else {

        auto responsedata = reply->readAll();

        QJsonArray years = QJsonDocument::fromJson(responsedata).array();          
        qDebug() << QString{responsedata};

        for(const QJsonValue& y : years) {
            QJsonObject obj = y.toObject();

            //doing "qDebug() << r" shows that r is "" (empty!)
            auto r = obj["anni"].toString();

            ui->comboBoxP->addItem(r);
        }

    }

}

这是怎么了?


请注意,qDebug() << QString{responsedata};打印"[{\"anni\":2019},{\"anni\":2018},{\"anni\":2017}]"

1 个答案:

答案 0 :(得分:5)

您的字段anni的值是一个整数。使用成员函数toString不会将其转换为字符串表示形式。它将返回NULL。 http://doc.qt.io/qt-5/qjsonvalue.html#toString

尝试:auto r = QString::number(obj["anni"].toInt());