2010-09-14 2 views
0

Мой выход json выглядит как [{"id": 2, "name": "AAA"}, {"id": 1, "name": "BBB"}]. Я хочу проанализировать это с помощью Qjson в mac. Я пытаюсь разобрать, но я не мог получить никаких результатов. пожалуйста помогите.Разбор JSON с использованием QJSON

Заранее спасибо.

+0

У вас какие-то ошибки? Что касается вашей цепочки Json, это массив с двумя объектами в нем. Формат выглядит нормально. Пожалуйста, предоставьте код, чтобы мы могли видеть, что вы делаете. –

+0

Я использую следующий код: QJson :: Парсер парсер; bool ok; QVariantMap result = parser.parse (cityReply-> readAll(), & ok) .toMap(); if (! Ok) { qFatal ("Произошла ошибка при разборе"); выход (1); } qDebug() << "Название:" << result.value ("name"). ToString(); } вывод: Имя: "" Примечание: если я отображу cityReply-> readAll() в окне сообщений, тогда я могу просмотреть результат webservice (json String). – Finder

+0

Я использую следующий код, QJson :: Парсер парсер; bool ok; QVariantMap result = parser.parse (cityReply-> readAll(), & ok) .toMap(); if (! ok) {qFatal ("Ошибка при разборе"); выход (1); } qDebug() << "Name:" << result.value ("name"). toString(); } вывод: Name: "" Примечание: если я отображу cityReply-> readAll() в окне сообщений, я могу просмотреть результат webservice (json String). – Finder

ответ

2

Я думаю, что проблема довольно проста, представление JSON подразумевает массив записей. Вы пытаетесь получить доступ к записи без использования итератора или цикла.

Используйте фрагмент ниже, чтобы превратить QVariant в список

QVariantList result = parser.parse(cityReply->readAll(), &ok).toList(); 

А затем цикл с записями, например:

foreach(QVariant record, result) { 
    QVariantMap map = record.toMap(); 
    qDebug() << map.value("name"); 
} 
+0

Я получаю пустой список. :( – Finder

+1

Попробуйте следующее: QVariant result = parser.parse (cityReply-> readAll(), &ok); qDebug() << результат: У вас есть какой-либо вывод в консоли? –

+0

Я получаю следующий вывод QVariant (,). – Finder

Смежные вопросы