@AlekseySheb

Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ почему возникает ошибка?

Помогите пожалуйста с Retrofit. Почему выдает ошибку?
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

Кусок json:
{
  "city": [
    {
      "city_id": "6",
      "country_id": "4",
      "region_id": "5",
      "name": "Балларат"
    },
    {
      "city_id": "7",
      "country_id": "4",
      "region_id": "5",
      "name": "Бендиго"
    },
    {
      "city_id": "8",
      "country_id": "4",
      "region_id": "5",
      "name": "Варрнамбул"
    }
  ]
}

Весь json
Код:
class Cities {
  @SerializedName("city")
  private List city;
  public List getCity() {
    return city;
  }
}

class CityValue {
  @SerializedName("city_id")
  @Expose
  private String city_id;

  @SerializedName("counter_id")
  @Expose
  private String counter_id;

  @SerializedName("region_id")
  @Expose
  private String region_id;

  @SerializedName("name")
  @Expose
  private String name;
}

Тут массив есть, что не так?
  • Вопрос задан
  • 6145 просмотров
Пригласить эксперта
Ответы на вопрос 2
Neikist
@Neikist
Бывший 1сник, теперь пишу под андроид
Попробуйте явно указать private List<CityValue> city;
Хотя на 100% не уверен, можете еще попробовать именно массив а не список.
Кстати ссылка на JSON не открывается.
Ответ написан
@terminator-light
Expected BEGIN_ARRAY but was BEGIN_OBJECT

говорит о том, что ожидался массив, но был получен объект.
Иначе говоря ожидался List<T>, но был получен объект List.
Поэтому параметризуйте List:
private List<CityValue> city;
public List<CityValue> getCity() {
    return city;
}
public void setCity(List<CityValue> city) {
    this.city = city;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы