Qjson получить имя объекта

У меня есть объект JSON Как я могу получить имя объекта?
У меня не может быть имени объекта, оно будет отправлено сервером, и таким образом я должен получить имена объектов.

{
"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
}
}

}

1

Решение

Поскольку ваш пост был помечен как qjson, я полагаю, вы его используете …

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/

0

Другие решения

Вы должны использовать поддержку json в QtCore с версией> = 5.X. Вы можете сделать это с помощью следующего кода:

json.txt

{
"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

#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 -I / usr / include / qt / QtCore -I / usr / include -lQt5Core main.cpp && ./a.out

KEYS WANTED: ("343152", "343157")
4

По вопросам рекламы [email protected]