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