Разобрать jsonarray?
у меня есть JSON, как следующее:
{
"agentsArray": [{
"ID": 570,
"picture": "03803.png",
"name": "Bob"
}, {
"ID": 571,
"picture": "02103.png",
"name": "Tina"
}]
}
Теперь я пытаюсь перебрать каждый элемент массива. С помощью qt-json
библиотека https://github.com/da4c30ff/qt-json
пробовал:
foreach(QVariantMap plugin, result["agentsArray"].toList()) {
qDebug() << " -" << plugin["ID"].toString();
}
но не могу заставить его работать, есть идеи, что я делаю неправильно?
1 ответов
Я бы рекомендовал использовать классы QJson* из QtCore в Qt 5. Они очень эффективны благодаря машиночитаемому двоичному хранилищу, оптимизированному для чтения и записи, а также очень удобны в использовании благодаря хорошему API, который у них есть.
эта база кода работает для меня просто отлично, но обратите внимание, что я пренебрег всей проверкой ошибок на данный момент, что не является хорошим советом для производственного кода. Это всего лишь прототип кода, соответственно.
main.в JSON
{
"agentsArray": [{
"ID": 570,
"picture": "03803.png",
"name": "Bob"
}, {
"ID": 571,
"picture": "02103.png",
"name": "Tina"
}]
}
main.cpp
#include <QFile>
#include <QByteArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
int main()
{
QFile file("main.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QByteArray jsonData = file.readAll();
file.close();
QJsonDocument document = QJsonDocument::fromJson(jsonData);
QJsonObject object = document.object();
QJsonValue value = object.value("agentsArray");
QJsonArray array = value.toArray();
foreach (const QJsonValue & v, array)
qDebug() << v.toObject().value("ID").toInt();
return 0;
}
главная.про
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
построить и запустить
qmake && make && ./main
выход
570
571