Ответ массива JSON-массива с использованием Retrofit & Gson

Вот мой ответ JSONArray от веб-службы:

[ { "sponsors": [ { "leg_id": "NYL000067", "type": "primary", "name": "AUBRY" }, { "leg_id": "NYL000171", "type": "cosponsor", "name": "PERRY" }, { "leg_id": "NYL000066", "type": "cosponsor", "name": "ARROYO" }, { "leg_id": "NYL000223", "type": "cosponsor", "name": "BARRETT" }, { "leg_id": "NYL000312", "type": "cosponsor", "name": "STECK" }, { "leg_id": "NYL000180", "type": "cosponsor", "name": "RIVERA" }, { "leg_id": "NYL000114", "type": "cosponsor", "name": "GOTTFRIED" }, { "leg_id": "NYL000091", "type": "cosponsor", "name": "COOK" }, { "leg_id": "NYL000126", "type": "cosponsor", "name": "JAFFEE" }, { "leg_id": "NYL000327", "type": "cosponsor", "name": "DAVILA" }, { "leg_id": "NYL000144", "type": "cosponsor", "name": "LUPARDO" }, { "leg_id": null, "type": "cosponsor", "name": "SEPULVEDA", "committee_id": null }, { "leg_id": "NYL000290", "type": "cosponsor", "name": "MOSLEY" }, { "leg_id": "NYL000167", "type": "cosponsor", "name": "ORTIZ" }, { "leg_id": "NYL000170", "type": "cosponsor", "name": "PEOPLES-STOKES" }, { "leg_id": "NYL000221", "type": "cosponsor", "name": "SKARTADOS" }, { "leg_id": "NYL000216", "type": "cosponsor", "name": "QUART" }, { "leg_id": "NYL000208", "type": "cosponsor", "name": "WEPRIN" }, { "leg_id": "NYL000186", "type": "cosponsor", "name": "ROSENTHAL" }, { "leg_id": "NYL000139", "type": "cosponsor", "name": "LIFTON" }, { "leg_id": "NYL000064", "type": "cosponsor", "name": "ABINANTI" }, { "leg_id": "NYL000173", "type": "cosponsor", "name": "PRETLOW" }, { "leg_id": "NYL000339", "type": "cosponsor", "name": "BICHOTTE" }, { "leg_id": null, "type": "cosponsor", "name": "BARRON", "committee_id": null }, { "leg_id": "NYL000341", "type": "cosponsor", "name": "WALKER" }, { "leg_id": "NYL000355", "type": "cosponsor", "name": "BLAKE" }, { "leg_id": "NYL000185", "type": "cosponsor", "name": "RODRIGUEZ" }, { "leg_id": "NYL000259", "type": "cosponsor", "name": "FAHY" }, { "leg_id": "NYL000203", "type": "cosponsor", "name": "TITONE" }, { "leg_id": "NYL000286", "type": "cosponsor", "name": "MCDONALD" }, { "leg_id": "NYL000081", "type": "cosponsor", "name": "CAHILL" }, { "leg_id": "NYL000421", "type": "cosponsor", "name": "HARRIS" }, { "leg_id": "NYL000338", "type": "cosponsor", "name": "JOYNER" }, { "leg_id": "NYL000448", "type": "cosponsor", "name": "JENNE" }, { "leg_id": "NYL000070", "type": "cosponsor", "name": "BENEDETTO" }, { "leg_id": "NYL000310", "type": "cosponsor", "name": "SOLAGES" }, { "leg_id": "NYL000357", "type": "cosponsor", "name": "RICHARDSON" }, { "leg_id": "NYL000324", "type": "cosponsor", "name": "PICHARDO" }, { "leg_id": "NYL000423", "type": "cosponsor", "name": "HYNDMAN" }, { "leg_id": "NYL000313", "type": "cosponsor", "name": "STIRPE" }, { "leg_id": "NYL000131", "type": "cosponsor", "name": "KAVANAGH" }, { "leg_id": "NYL000204", "type": "cosponsor", "name": "TITUS" }, { "leg_id": "NYL000275", "type": "cosponsor", "name": "KIM" }, { "leg_id": "NYL000195", "type": "cosponsor", "name": "SIMOTAS" }, { "leg_id": "NYL000293", "type": "cosponsor", "name": "OTIS" }, { "leg_id": "NYL000220", "type": "cosponsor", "name": "MAYER" }, { "leg_id": "NYL000344", "type": "cosponsor", "name": "JEAN-PIERRE" } ], "id": "NYB00099404" }, { "sponsors": [ { "leg_id": "NJL000113", "type": "primary", "name": "Vainieri Huttle, Valerie" } ], "id": "NJB00038817" }, { "sponsors": [ { "leg_id": "NYL000208", "type": "primary", "name": "WEPRIN" } ], "id": "NYB00066288" }, { "sponsors": [ { "leg_id": "NJL000083", "type": "primary", "name": "Jasey, Mila M." }, { "leg_id": "NJL000086", "type": "primary", "name": "Caputo, Ralph R." }, { "leg_id": "NJL000046", "type": "primary", "name": "Watson Coleman, Bonnie" }, { "leg_id": "NJL000177", "type": "primary", "name": "Pintor Marin, Eliana" }, { "leg_id": "NJL000164", "type": "primary", "name": "Sumter, Shavonda E." }, { "leg_id": "NJL000104", "type": "primary", "name": "Oliver, Sheila Y." }, { "leg_id": "NJL000095", "type": "primary", "name": "Mainor, Charles" }, { "leg_id": "NJL000165", "type": "primary", "name": "Wimberly, Benjie E." }, { "leg_id": "NJL000016", "type": "cosponsor", "name": "Fuentes, Angel" }, { "leg_id": "NJL000085", "type": "cosponsor", "name": "Tucker, Cleopatra G." }, { "leg_id": "NJL000067", "type": "cosponsor", "name": "Stender, Linda" }, { "leg_id": "NJL000114", "type": "cosponsor", "name": "Johnson, Gordon M." }, { "leg_id": "NJL000082", "type": "cosponsor", "name": "McKeon, John F." }, { "leg_id": "NJL000129", "type": "cosponsor", "name": "Singleton, Troy" } ], "id": "NJB00030216" }, { "sponsors": [ { "leg_id": "NYL000088", "official_type": "SPONSOR", "type": "primary", "name": "Clark" }, { "leg_id": "NYL000171", "official_type": "COSPNSR", "type": "cosponsor", "name": "Perry" } ], "id": "NYB00035573" }, { "sponsors": [ { "leg_id": "NJL000111", "type": "primary", "name": "Schaer, Gary S." }, { "leg_id": "NJL000018", "type": "primary", "name": "Lampitt, Pamela R." }, { "leg_id": "NJL000105", "type": "primary", "name": "Giblin, Thomas P." }, { "leg_id": "NJL000171", "type": "primary", "name": "Mosquera, Gabriela M." }, { "leg_id": "NJL000011", "type": "cosponsor", "name": "Moriarty, Paul D." }, { "leg_id": "NJL000165", "type": "cosponsor", "name": "Wimberly, Benjie E." }, { "leg_id": "NJL000010", "type": "cosponsor", "name": "Madden, Fred H." }, { "leg_id": "NJL000007", "type": "cosponsor", "name": "Sweeney, Stephen M." }, { "leg_id": "NJL000039", "type": "cosponsor", "name": "Thompson, Samuel D." }, { "leg_id": "NJL000112", "type": "cosponsor", "name": "Weinberg, Loretta" }, { "leg_id": "NJL000087", "type": "cosponsor", "name": "Ruiz, M. Teresa" } ], "id": "NJB00021785" }, { "sponsors": [ { "leg_id": "NYL000138", "official_type": "SPONSOR", "type": "primary", "name": "Lentol" } ], "id": "NYB00010409" }, { "sponsors": [ { "leg_id": "NJL000028", "type": "primary", "name": "Gove, DiAnne C." }, { "leg_id": "NJL000027", "type": "primary", "name": "Rumpf, Brian E." }, { "leg_id": "NJL000099", "type": "cosponsor", "name": "Prieto, Vincent" } ], "id": "NJB00002928" }, { "sponsors": [ { "leg_id": "NJL000094", "type": "primary", "name": "Chiappone, Anthony" }, { "leg_id": "NJL000034", "type": "cosponsor", "name": "Angelini, Mary Pat" } ], "id": "NJB00010952" } ] 

Вот ApiInterface.java

  public interface ApiInterface { @GET("bills/") Call getListOfSponsors(@Query("bill_id") String billId , @Query("session") String session, @Query("fields") String field); } 

И вот вызов метода и ответа:

  ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class); Call call = apiService.getListOfSponsors(AppConstants.ASSEMBLY_BILL_ID,AppConstants.SESSION,AppConstants.FIELD); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { Log.d(TAG,"Number :"+response.raw()); List sponsors = response.body().getSponsors(); Log.d(TAG,"Number of sponsors :"+ sponsors.size()); } @Override public void onFailure(Call call, Throwable t) { t.printStackTrace(); } }); 

На данный момент это не удается и вот вывод logcat:

 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ 

Он не может выполнить ответ. Попросите меня разобрать этот ответ.

Попробуйте использовать этот

  @FormUrlEncoded @POST("api/sponsors") Call> getStatesAndDistrict( @Field("xyz") String field1 ); Call > call = service.getSponsorsValue(); call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { List rs = response.body(); } @Override public void onFailure(Call> call, Throwable t) { } }); class SponsorsResult { @SerializedName("sponsors") private List sponsors; public List getSponsors() { return sponsors; } } class SponsorsValue{ @SerializedName("leg_id") @Expose private String legId; @SerializedName("type") @Expose private String type; @SerializedName("name") @Expose private String name; public String getLegId() { return legId; } public void setLegId(String legId) { this.legId = legId; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 

Пожалуйста, дайте мне знать, если вы столкнулись с какой-либо проблемой.

Вы можете автоматически создавать POJO-classы из json-ответа, используя эту ссылку -> jsonschema2pojo

Все, что вам нужно сделать, – вставить ответ JSON в поле редактирования.

  1. Выберите язык цели как JAVA,
  2. Тип источника как JSON
  3. Стиль annotations как Gson
  4. и проверить Использовать примитивные типы, включая геттеры и сеттеры, разрешить дополнительные свойства

Создайте class ниже в своем модельном пакете:

  import java.util.List; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public class SponsorModel { @SerializedName("sponsors") @Expose private List sponsors = null; @SerializedName("id") @Expose private String id; public List getSponsors() { return sponsors; } public void setSponsors(List sponsors) { this.sponsors = sponsors; } public String getId() { return id; } public void setId(String id) { this.id = id; } } 

———————————– Sponsor.java ———— ———————–

 import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public class Sponsor { @SerializedName("leg_id") @Expose private String legId; @SerializedName("type") @Expose private String type; @SerializedName("name") @Expose private String name; @SerializedName("committee_id") @Expose private Object committeeId; @SerializedName("official_type") @Expose private String officialType; public String getLegId() { return legId; } public void setLegId(String legId) { this.legId = legId; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Object getCommitteeId() { return committeeId; } public void setCommitteeId(Object committeeId) { this.committeeId = committeeId; } public String getOfficialType() { return officialType; } public void setOfficialType(String officialType) { this.officialType = officialType; } } 

Установите выше СпонсорыModel в вашем результате.

благодаря

  • Как обращаться с Dynamic JSON в Модернизации?
  • Преобразование строки в массив JSON
  • jackson - Как обрабатывать (десериализовать) вложенный JSON?
  • jackson не десериализует общий список, который он сериализовал
  • Сделать jackson интерпретировать единственный объект JSON как массив с одним элементом
  • Ошибка jQuery AJAX в IE
  • Как запретить Gson преобразовывать длинное число (строка json) в формат научной нотации?
  • Сериализация и десериализация json с повышением
  • Сравните два объекта JSON в Java
  • Spring 4.x / 3.x (веб-MVC) REST API и JSON2 Почтовые запросы, как правильно это сделать один раз для всех?
  • Конвенция о присвоении имен JSON
  • Interesting Posts

    Как можно синхронизировать папки между несколькими машинами по моей домашней сети?

    VIM – Как изменить цвет выражений if, else, endif, for и endfor

    Угловой 2: Как использовать / импортировать http-модуль?

    Каков рекомендуемый каталог для хранения содержимого веб-сайта?

    Состояние сеанса может использоваться только тогда, когда для параметра enableSessionState установлено значение true либо в конфигурации

    Реализация нашего собственного сервера STUN / TURN для приложения WebRTC

    Возможно ли, чтобы вирус в окнах заражал ubuntu?

    Как предотвратить обновление Chrome при просмотре источника?

    Integer.valueOf () vs. Integer.parseInt ()

    EF Code First: как получить случайные строки

    как преобразовать цвет rgb в int в java

    Что это за странное поведение двоеточия Python?

    Уникальное генерирование случайных строк

    Какая архитектура набора инструкций (ISA) является частью RDRAND и RDSEED?

    Измерить строку без использования объекта Graphics?

    Давайте будем гением компьютера.