2015-03-30 4 views
0

j'ai une réponse JSON comme ceci:QJsonDocument - obtenir des valeurs indenté

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

Je veux entrer dans les « participants » le second tableau identifiant (les les plus en retrait).

Mon code obtient la valeur de la première valeur d'identifiant et celle des participants. Voici mon code:

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()); 
    } 
} 

Je veux savoir comment pourrais-je me débarrasser des ids moins dentelées et d'obtenir les plus dentelées dans myIdList.

Avoir un bon code!

Répondre

1

Ici, vous allez

#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; 
} 
+0

ont parfaitement fonctionné. Merci beaucoup! – MuGiK