У меня есть массив JSON, который возвращает PHP, например вывод из PHP:
[
{
"uid": "1",
"username": "mike",
"time_created": "2014-12-27 15:30:03",
"time_updated": "2014-12-27 15:30:03",
"time_expires": "2014-12-27 15:30:03"
},
{
"uid": "2",
"username": "jason",
"time_created": "2014-12-27 15:31:41",
"time_updated": "2014-12-27 15:31:41",
"time_expires": "2014-12-27 15:31:41"
},
{
"uid": "3",
"username": "david",
"time_created": "2014-12-27 18:10:53",
"time_updated": "2014-12-27 18:10:53",
"time_expires": "2014-12-27 18:10:53"
}
]
Я попробовал несколько методов, я попробовал Iterator, я попытался использовать Array из JSonObject, но ничего не работает! Пока у меня есть этот пример кода:
QJsonDocument jsonResponse = QJsonDocument::fromJson(JData.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
for (QJsonObject:: Iterator it = jsonObject.begin(); it != jsonObject.end(); ++it) {
QJsonArray array= (*it).toArray();
foreach (const QJsonValue & v, array)
qDebug() << v.toString();
Я попробовал несколько других способов, не повезло. Мне нужно перебирать данные JSON. Пожалуйста посоветуй. Я использую QT 5.4, C++.
Просто проверил ваш код с первым помещением данных в QString (не подразумевая, что это нужно сделать, только для моего отладки). Несколько проблем найдено:
QString JsonStr =
"["
"{"
"\"uid\": \"1\","
"\"username\": \"mike\","
"\"time_created\": \"2014-12-27 15:30:03\","
"\"time_updated\": \"2014-12-27 15:30:03\","
"\"time_expires\": \"2014-12-27 15:30:03\""
"},"
"{"
"\"uid\": \"2\","
"\"username\": \"jason\","
"\"time_created\": \"2014-12-27 15:31:41\","
"\"time_updated\": \"2014-12-27 15:31:41\","
"\"time_expires\": \"2014-12-27 15:31:41\""
"},"
"{"
"\"uid\": \"3\","
"\"username\": \"david\","
"\"time_created\": \"2014-12-27 18:10:53\","
"\"time_updated\": \"2014-12-27 18:10:53\","
"\"time_expires\": \"2014-12-27 18:10:53\""
"}"
"]";
QJsonDocument jsonResponse = QJsonDocument::fromJson(JsonStr.toUtf8());
QJsonArray array = jsonResponse.array();
// print
foreach (const QJsonValue & v, array)
{
qDebug() << v;
}
// or parse
foreach (const QJsonValue& v, array)
{
QJsonObject o = v.toObject();
qDebug() << o["username"];
qDebug() << o["time_expires"];
}