私は次のような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();
}
しかし、それを機能させることはできません、私が間違っていることについて何か考えはありますか?
Qt5でQtCoreのQJson *クラスを使用することをお勧めします。これらは読み取りと書き込み用に最適化された機械可読バイナリストレージにより非常に効率的であり、NiceAPIがあるため非常に便利です。
このコードベースは私にとっては問題なく機能しますが、今のところすべてのエラーチェックを無視していることに注意してください。これは製品コードの良いアドバイスではありません。これはそれぞれ単なるプロトタイプコードです。
{
"agentsArray": [{
"ID": 570,
"picture": "03803.png",
"name": "Bob"
}, {
"ID": 571,
"picture": "02103.png",
"name": "Tina"
}]
}
#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