Android: ошибка при разборе массива JSON с использованием библиотеки GSON

Возможный дубликат:
GSON выбрасывает "Ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY"?

Сценарий: я анализирую API в формате JSON с использованием библиотеки GSON. Вот файл JSON, который я анализирую:

{
  "questions": [
    {
      "question_1": "Question 1",
      "options": [
        "option_1 : option1",
        "option_2 : option2",
        "option_3 : option 3",
        "option_4 : option 4"
      ]
    },
    {
      "question_2": "Question 2",
      "options": [
        "option_1 : option 1",
        "option_2 : option 2",
        "option_3 : option 3"
      ]
    }
  ]
}

И мой объектный класс выглядит так:

public class Practise_Question_Object {

    public List<Questions> questions;

    public class Questions {

        @SerializedName("question")
        public String Question;

        public List<Options> options;

        public class Options {

            public String Option_1;

            public String Option_2;

            public String Option_3;

            public String Option_4;
        }

    }

Проблема Моя проблема в том, что всякий раз, когда я пытаюсь проанализировать значения, это показывает мне ошибку java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 53

если я перешлю "параметры" из массива в объект, то я могу легко разобрать. Но в моем проекте (со стороны PHP) я не могу использовать Object.

1 ответ

Решение

Что делать, если вы измените эту строку:

public List<Options> options;

чтобы:

public Options[] options;

Похоже, ваш JSON содержит массив Options объекты.


В противном случае я могу предложить опубликовать фактический код, который вы используете в веб-сервисе, просто чтобы подтвердить, что вы используете автоматический анализ в стиле GSOM DOM.

Другие вопросы по тегам