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

Raf*_*ssi 1 c++ qt json qt-creator

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

[{"anni":2019},{"anni":2018},{"anni":2017}]
Run Code Online (Sandbox Code Playgroud)

从这个简单的PHP生成的地方:

header('Content-Type: application/json');
echo json_encode($data);
Run Code Online (Sandbox Code Playgroud)

$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);
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

这有什么不对?


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

小智 5

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

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