QJsonDocument - получение значений с отступом
У меня есть ответ Json, как это:
{
"data": [
{
"id": "someID",
"participants": {
"data": [
{
"id": "idN1"
},
{
"id": "idN2"
}
]
}
},
{
"id": "someID",
"participants": {
"data": [
{
"id": "idN3"
},
{
"id": "idN4"
}
]
}
}
]
}
Я хочу получить второй массив идентификаторов (с наибольшим отступом) внутри "участников".
Мой код получает значение первого значения идентификатора intead из тех, что внутри участников. Вот мой код:
QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray jsonArray = jsonObject["data"].toArray();
foreach (const QJsonValue & value, jsonArray) {
QJsonObject obj = value.toObject();
if (obj["id"].toString()!=selfID) {
myIdList.append(obj["id"].toString());
}
}
Я хочу знать, как я могу избавиться от идентификаторов с меньшим отступом и получить самые отступленные в myIdList.
Хорошего кода!
1 ответ
Решение
Ну вот
#include <QList>
#include <QFile>
#include <QDebug>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
int main(int argc, char *argv[])
{
QFile file("/your/json-file/bla.json");
file.open(QIODevice::ReadOnly);
QString data = file.readAll();
QString selfID = "2";
QList<QString> myIdList = QList<QString>();
QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray jsonArray = jsonObject["data"].toArray();
foreach (const QJsonValue & value, jsonArray) {
QJsonObject obj = value.toObject();
QString id = obj["id"].toString();
if (id != selfID)
{
QJsonObject participants = obj["participants"].toObject();
QJsonArray participants_data = participants["data"].toArray();
foreach (const QJsonValue &data_element, participants_data)
{
QString inner_id = data_element.toObject()["id"].toString();
myIdList.append(inner_id);
}
}
}
qDebug() << myIdList;
return 0;
}