2016-11-28 9 views
0

からQJsonObjectまでどのようにしてC++でキーと値のペアを取得するのだろうか?これまでのところ、私は価値を得ることしかできません。QJsonObjectを介してForeachキーと値のペアを取得する

//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

keysメソッドは最上位のキーを返します。あなたの場合json.keys() –

+0

@johnelemans素晴らしい、ありがとう。私はあなたが以下にそれを掲示すれば答えとしてあなたの解決策を受け入れることができます:) – Jon

答えて

0

ジョンはすでに答えを出しました。キー()を使用すると、以下のようになります。

#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

'value'とは何ですか? – eyllanesc

+0

あなたは正しいeyllanescです。少しのバグがありました。私は提出する前に私のコードをテストする必要があります。私は自分の答えを改善しました。 – twisq

関連する問題