我有以下json(来自Google Distance API)
{
"destination_addresses" : [ "Hannover, Deutschland" ],
"origin_addresses" : [ "Wolfsburg, Deutschland" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "88,8 km",
"value" : 88790
},
"duration" : {
"text" : "58 Minuten",
"value" : 3473
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
并且喜欢获取distance
值("文本"one_answers"值")
当我像这样迭代QJsonArray时:
QJsonDocument document = QJsonDocument::fromJson(bts);
QJsonObject jsonObject = document.object();
QJsonArray jsonArray = jsonObject["rows"].toArray();
foreach (const QJsonValue & value, jsonArray) {
QJsonObject obj = value.toObject();
foreach (const QJsonValue & v, obj["elements"].toArray()) {
QJsonObject obj2 = v.toObject();
qDebug() << obj2["distance"];
//returns [1]
qDebug() << obj2["distance"].toArray();
//returns [2]
}
}
我应该能够得到这些值。然而,相反,我得到了这个:
[1] =
QJsonValue(object, QJsonObject({"text":"88,8 km","value":88790}) )
[2] =
QJsonArray()
它似乎是空的。
我不知道为什么。因为当我从Json得到"元素"数组时,我就是这样做的。
关于[1]:obj2["distance"]是一个对象,而不是数组,具有字段"text"one_answers"value",您应该再做一项工作:
QJsonObject obj2 = v.toObject();
QJsonObject finalObject = obj2["distance"].toObject();
QString text = finalObject["text"].toString();
int value = finalObject["value"].toInt();
或者类似的东西。〔{},},{}〕-对象数组{"a":{},"b":{},"c":{}}-包含3个对象的对象。