Перебрать массив QJsonArray
Никак не могу понять, каким образом можно вытащить значения из этого массива? Пробовал по разному, ничего не выходит.
Массив вида [11111111111111,22222222222222,33333333333333]
QJsonArray data = jb.value("test").toArray();
qDebug() << data; // в массиве 3 элемента
//вывод: QJsonValue(array, QJsonArray([11111111111111,22222222222222,33333333333333]))
//пробую так, вывод пустой.
for(const QJsonValue& v: data)
{
qDebug() << v.toString();
}
//""
//""
//""
Ответы (2 шт):
Автор решения: Александр
→ Ссылка
QString jsonRaw = "[1111, 2222, 3333]";
QVariantList jsonList = QJsonDocument::fromJson(jsonRaw.toUtf8()).toVariant().toList();
for(auto &it : jsonList)
{
qDebug() << it;
}
Вывод:
QVariant(double, 1111)
QVariant(double, 2222)
QVariant(double, 3333)
Автор решения: Sergey Tatarincev
→ Ссылка
Полностью "до кучи" перебор элементов и подэлементов. Надеюсь доступно.
json
[
{"Id": 0,
"Text": "element1",
"SubItems": ["subelement1.1","subelement1.2"]
},
{"Id": 1,
"Text": "element2",
"SubItems": ["subelement2.1","subelement2.2"]
}
]
код:
QByteArray myjson="[{\"Id\": 0, \"Text\": \"element1\", \"SubItems\": [\"subelement1.1\",\"subelement1.2\"] }, {\"Id\": 1, \"Text\": \"element2\", \"SubItems\": [\"subelement2.1\",\"subelement2.2\"] } ]";
QJsonParseError err;
QJsonDocument document = QJsonDocument::fromJson(myjson,&err);
if(err.error!=QJsonParseError::NoError){
qDebug()<<"error: "<<err.errorString();
return 0;
}
QJsonArray array = document.array();
foreach(QJsonValue val,array){
QJsonObject obj = val.toObject();
qDebug()<< obj.value("Id").toInt()<<": "<<obj.value("Text").toString();
QJsonArray array = obj.value("SubItems").toArray();
foreach(QJsonValue arrval,array){
qDebug()<<" "<<arrval.toString();
}
}