首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qjson获取对象名

Qjson获取对象名
EN

Stack Overflow用户
提问于 2013-12-22 15:40:07
回答 2查看 2.4K关注 0票数 2

我有一个json对象,如何获得对象名称?我不能有对象名称,它将由服务器发送,这样我就可以得到对象名称。

代码语言:javascript
复制
{
    "success":1,
    "return":{
        "343152":{//get this object name
            "pair":"usd_eur",
            "type":"sell",
            "amount":1.00000000,
            "rate":3.00000000,
            "timestamp_created":1342448420,
            "status":0
        }
                "343157":{//get this object name
            "pair":"usd_eur",
            "type":"sell",
            "amount":1.00000000,
            "rate":3.00000000,
            "timestamp_created":1342448420,
            "status":0
        }
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-22 15:45:24

既然你的帖子贴上了qjson的标签,我猜你在用它.

代码语言:javascript
复制
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse (json, &ok).toMap(); // json is a QByteArray w. the data
QVariantMap returnMap = result["return"].toMap();

// iterate your map to get the names you're interested in.
for(QVariantMap::const_iterator iter = returnMap.begin(); iter != returnMap.end(); ++iter) {
    qDebug() << iter.key();
}

// Do whatever you need with yourObj..

请参阅http://qjson.sourceforge.net/usage/

票数 1
EN

Stack Overflow用户

发布于 2013-12-22 15:59:04

您应该在QtCore中使用>= 5.X版本的json支持。

json.txt

代码语言:javascript
复制
{
    "success": 1,
    "return": {
        "343152": {
            "pair": "usd_eur",
            "type": "sell",
            "amount": 1.00000000,
            "rate": 3.00000000,
            "timestamp_created": 1342448420,
            "status": 0
        },

        "343157": {
            "pair": "usd_eur",
            "type": "sell",
            "amount ":1.00000000,
            "rate": 3.00000000,
            "timestamp_created": 1342448420,
            "status": 0
        }
    }
}

main.cpp

代码语言:javascript
复制
#include <QJsonParseError>
#include <QJsonDocument>
#include <QJsonObject>

#include <QByteArray>
#include <QStringList>
#include <QDebug>
#include <QFile>

int main()
{
    QFile file("json.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qDebug() << "File open error:" << file.errorString();
        return 1;
    }

    QByteArray jsonByteArray = file.readAll();

    file.close();

    QJsonParseError jsonParseError;
    QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonByteArray, &jsonParseError);
    if (jsonParseError.error != QJsonParseError::NoError) {
        qDebug() << "Error happened:" << jsonParseError.errorString();
        return 1;
    }

    if (!jsonDocument.isObject()) {
        qDebug() << "The json data is not an object";
        return 1;
    }

    QJsonObject mainJsonObject(jsonDocument.object());

    QJsonValue returnJsonValue = mainJsonObject.value(QStringLiteral("return"));

    if (!returnJsonValue.isObject()) {
        qDebug() << "The json data is not an object";
        return 1;
    }

    qDebug() << "KEYS WANTED:" << returnJsonValue.toObject().keys();

    return 0;
}

输出

g++ -Wall -fPIC -I/usr/include/qt /usr/include/qt/QtCore -I/usr/include -lQt5Core main.cpp & ./a.out

代码语言:javascript
复制
KEYS WANTED: ("343152", "343157")
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20731046

复制
相关文章

相似问题

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