首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过QJsonObject进行Foreach以获取键/值对

通过QJsonObject进行Foreach以获取键/值对
EN

Stack Overflow用户
提问于 2016-11-29 01:53:26
回答 1查看 13.3K关注 0票数 7

我想知道如何通过QJsonObject来获取C++中的键/值对?到目前为止,我只能获得值。

代码语言:javascript
复制
//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"
}
EN

回答 1

Stack Overflow用户

发布于 2017-12-06 07:02:36

约翰已经给出了答案。使用keys()一个完整的工作解决方案将是:

代码语言:javascript
复制
#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();
}
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40850552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档