QJsonDocument - 获取缩进值

时间:2015-03-30 18:42:32

标签: qt qjson qjsonobject

我有这样的Json回复:

{
  "data": [
    {
      "id": "someID", 
      "participants": {
        "data": [
          {
            "id": "idN1"
          }, 
          {
            "id": "idN2"
          }
        ]
      }
    },
    {
      "id": "someID", 
      "participants": {
        "data": [
          {
            "id": "idN3"
          }, 
          {
            "id": "idN4"
          }
        ]
      }
    }
  ]
} 

我希望在"参与者"内获得第二个id数组(最多缩进的数组)。

我的代码获取了参与者内部的第一个id值intead的值。这是我的代码:

QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray jsonArray = jsonObject["data"].toArray();

foreach (const QJsonValue & value, jsonArray) {
    QJsonObject obj = value.toObject();

    if (obj["id"].toString()!=selfID) {
        myIdList.append(obj["id"].toString());
    }
}

我想知道如何摆脱不那么缩进的ID,并将最多缩进的缩进到myIdList中。

有一个很好的代码!

1 个答案:

答案 0 :(得分:1)

你去吧

#include <QList>
#include <QFile>

#include <QDebug>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>

int main(int argc, char *argv[])
{
    QFile file("/your/json-file/bla.json");
    file.open(QIODevice::ReadOnly);

    QString data = file.readAll();
    QString selfID = "2";

    QList<QString> myIdList = QList<QString>();

    QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toUtf8());
    QJsonObject jsonObject = jsonResponse.object();
    QJsonArray jsonArray = jsonObject["data"].toArray();

    foreach (const QJsonValue & value, jsonArray) {
        QJsonObject obj = value.toObject();
        QString id = obj["id"].toString();

        if (id != selfID)
        {
            QJsonObject participants = obj["participants"].toObject();
            QJsonArray participants_data = participants["data"].toArray();

            foreach (const QJsonValue &data_element, participants_data)
            {
                QString inner_id = data_element.toObject()["id"].toString();
                myIdList.append(inner_id);
            }
        }
    }
    qDebug() << myIdList;

    return 0;
}