代码之家  ›  专栏  ›  技术社区  ›  Raffaele Rossi

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

  •  1
  • Raffaele Rossi  · 技术社区  · 7 年前

    [{"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 回复  |  直到 7 年前
        1
  •  5
  •   Tezirg    7 年前

    anni 是一个整数。使用成员函数 toString http://doc.qt.io/qt-5/qjsonvalue.html#toString

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