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 个对象的对象。