Qt:多数组(来自JSON);具体 child
Qt: Multi Array (from JSON); get to specific child
我有以下json
(距Google距离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
值('text' 和 'value')
当我像这样迭代 QJson 数组时:
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.
到达 "elements" 数组时,我就是这样做的
关于[1]:
obj2["distance"] 是一个对象,不是数组,有字段 "text" 和 "value",你应该再做一项工作:
QJsonObject obj2 = v.toObject();
QJsonObject finalObject = obj2["distance"].toObject();
QString text = finalObject["text"].toString();
int value = finalObject["value"].toInt();
或类似的东西。
[{}, {}, {}] - 对象数组
{"a":{}, "b":{},"c":{}} - 包含 3 个对象的对象。
我有以下json (距Google距离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
值('text' 和 'value')
当我像这样迭代 QJson 数组时:
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.
到达 "elements" 数组时,我就是这样做的关于[1]: obj2["distance"] 是一个对象,不是数组,有字段 "text" 和 "value",你应该再做一项工作:
QJsonObject obj2 = v.toObject();
QJsonObject finalObject = obj2["distance"].toObject();
QString text = finalObject["text"].toString();
int value = finalObject["value"].toInt();
或类似的东西。 [{}, {}, {}] - 对象数组 {"a":{}, "b":{},"c":{}} - 包含 3 个对象的对象。