Qt:多数组(来自JSON);找到特定的孩子



我有以下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个对象的对象。

相关内容

  • 没有找到相关文章