Проблемы с парсингом json

Ответить
Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Проблемы с парсингом json

Сообщение Lucifer777 » 04 май 2014, 01:51

Здравствуйте!
Помогите пожалуйста разобраться в чём проблема. Вот мой json

Код: Выделить всё

{
  "code": 0,
  "result": [
    {
      "id": 1,
      "type": "new",
      "complex": "Название",
      "complex_id": 1,
      "title": "Первая новость",
      "text": "<p>текст текст текст</p>\r\n",
      "link": "ya.ru",
      "image": "http://159.253.21.179/media/images/avatar3.jpg",
      "pub_date": "31-03-2014 09:32 +0000",
      "mod_date": "29-04-2014 15:03 +0000",
      "pub_date_unix": 1396243924,
      "mod_date_unix": 1398769409
    },
    {
      "id": 2,
      "type": "new",
      "complex": "Название",
      "complex_id": 1,
      "title": "Вторая новость",
      "text": "<h1>Заголовок новости</h1>\r\n\r\n<hr />\r\n<p>текст <strong>текст</strong> <em>текст</em> текст</p>\r\n",
      "link": "",
      "image": "",
      "pub_date": "31-03-2014 10:25 +0000",
      "mod_date": "28-04-2014 09:19 +0000",
      "pub_date_unix": 1396247135,
      "mod_date_unix": 1398662374
    }
  ]
}
вот так я начинаю его парсинг:

Код: Выделить всё

public ArrayList<NewsModel> readMessagesArray(JsonReader reader) throws IOException {
		
		
		ArrayList<NewsModel> messages = null;
		reader.beginObject();
		while (reader.hasNext()) {
			try {
				String nm = reader.nextName();
			
				if (nm.equals("result")) {
				reader.beginArray();
				messages = processArray(reader);
				reader.endArray();
			}
			
			} catch(Exception e){
				e.printStackTrace();
				
			}
		}
		reader.endObject();
		return messages;
	}
и падаем с такой ошибкой:

Код: Выделить всё

 java.lang.IllegalStateException: Expected a name but was NUMBER
Когда метод nextName() вызывается второй раз. Получается в первый раз он получает токен "code", а потом не фига не получает.

Как быть?

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Проблемы с парсингом json

Сообщение Lucifer777 » 04 май 2014, 02:09

Отставить панику, дописываем reader.skipValue(); в блок catch и всё начинает работать.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Проблемы с парсингом json

Сообщение Foenix » 04 май 2014, 10:49

ну как же в catch?
может, так?

Код: Выделить всё

if (name.equals("results"))
                {
                   ...
                }
                else
                {
                    reader.skipValue();
                }
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Проблемы с парсингом json

Сообщение Lucifer777 » 12 май 2014, 13:18

Foenix писал(а):ну как же в catch?
может, так?

Код: Выделить всё

if (name.equals("results"))
                {
                   ...
                }
                else
                {
                    reader.skipValue();
                }
так не получится, потому, что здесь падаем String nm = reader.nextName();

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Проблемы с парсингом json

Сообщение KamiSempai » 12 май 2014, 17:46

Хм. Первый раз вижу такой способ парсинга. Всегда использовал org.json.JSONObject.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить