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

Posted

技术标签:

【中文标题】C++ Qt 无法正确解析 JSON 数组【英文标题】:C++ Qt unable to parse JSON array correctly 【发布时间】:2018-11-01 14:37:50 【问题描述】:

我正在尝试使用 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() << QStringresponsedata;

        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() &lt;&lt; QStringresponsedata; 打印"[\"anni\":2019,\"anni\":2018,\"anni\":2017]"

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢!我误解了toString()的用法,我以为它可以将字段转换为字符串。

以上是关于C++ Qt 无法正确解析 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

Qt Json解析c ++

Qt 并在 C++ 中解析 JSON 数据 [关闭]

Mantle 2.0 无法为嵌套数组中的符号解析 JSON

如何正确解析 SWIFT 中的 JSON 对象

通过perl解析用JSON编码的数组

使用 Alamofire 和 SwiftyJSON 正确解析具有多个对象的 JSON 数组