2016-11-28 4 views
0

Ich frage mich, wie ich foreach durch eine QJsonObject die Schlüssel/Wert-Paare in C++ bekommen würde? Bis jetzt kann ich nur den Wert bekommen.Foreach durch QJsonObject, um Schlüssel/Wert-Paar

//main.cpp 
QFile file(":/geoip.json"); 
file.open(QIODevice::ReadOnly); 
QByteArray rawData = file.readAll(); 
file.close(); 
QJsonDocument doc(QJsonDocument::fromJson(rawData)); 
QJsonObject json = doc.object(); 
foreach(const QJsonValue &value, json) { 
    QJsonObject obj = value.toObject(); 
    qDebug() << value; 
} 

//geoip.json 
{ 
    "Afghanistan": "58.147.159.255", 
    "Albania": "31.22.63.255", 
    "Algeria": "105.235.143.255", 
    "American Samoa": "202.70.115.241", 
    "Andorra": "109.111.127.255", 
    "Angola": "105.175.255.255", 
    "Anguilla": "208.66.50.44", 
    "Antarctica": "46.36.195.10" 
} 
+1

Die Schlüsselmethode gibt die obersten Schlüssel zurück. in deinem Fall json.keys() –

+0

@johnelemans Super, danke. Ich kann Ihre Lösung als die Antwort akzeptieren, wenn Sie es unten posten :) – Jon

Antwort

0

John gab bereits die Antwort. Mit den Tasten() wäre eine vollständige Arbeitslösung:

#include <QCoreApplication> 
#include <QFile> 
#include <QByteArray> 
#include <QJsonDocument> 
#include <QJsonObject> 
#include <QJsonValue> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    //main.cpp 
    QFile file("path/to/geoip.json"); 
    file.open(QIODevice::ReadOnly); 
    QByteArray rawData = file.readAll(); 
    file.close(); 
    QJsonDocument doc(QJsonDocument::fromJson(rawData)); 
    QJsonObject json = doc.object(); 
    foreach(const QString& key, json.keys()) { 
     QJsonValue value = json.value(key); 
     qDebug() << "Key = " << key << ", Value = " << value.toString(); 
    } 

    return a.exec(); 
} 
+0

Was ist "Wert"? – eyllanesc

+0

Sie haben Recht eyllanesc. Da war ein kleiner Käfer. Ich sollte meinen Code vor dem Senden testen. Ich habe meine Antwort verbessert. – twisq

Verwandte Themen