Вы помещаете массив в качестве корня документа, поэтому сначала извлекайте его:
QJsonDocument jsonResponse = QJsonDocument::fromJson(str.toLatin1());
QJsonArray jsonArray = jsonResponse.array();
Проверьте, пуст ли он, если нет, получите первый элемент (объект levan ):
if(!jsonArray.isEmpty())
{
QJsonObject jsonObject = jsonArray.first().toObject();
Теперь вы можете прочитать ключи объекта, например:
qDebug()<< jsonObject.value("tipo");
выведет:
QJsonValue (строка, "reforço")
Обратите внимание, что levan не ключ, а имя переменной.Поэтому эта строка:
jsonResponse.object().value("levan");
никогда не будет работать.
Если проблема не устранена, вот пара советов по отладке вашего кода.
Сначала проверьте наличие ошибок синтаксического анализа., таким образом:
QJsonParseError parseError;
QJsonDocument jsonResponse = QJsonDocument::fromJson(str.toLatin1(), &parseError);
if(parseError.error != QJsonParseError::NoError)
{
qDebug() << "Parse error: " << parseError.errorString();
}
Если это произойдет, просто осмотрите строку (лучше: все равно проверьте ее), чтобы увидеть, что получилось:
qDebug() << str.toLatin1().data();
Ожидаемый результат:
[
{
"ca": 10,
"cb": 0,
"cc": 0,
"cd": 0,
"ce": 0,
"cf": 0,
"cg": 0,
"ch": 0,
"id": 1,
"tipo": "reforço"
}
]