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

C++ Qt unable to parse JSON array correctly

我正在尝试用 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}]"

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

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