使用Retrofit和Gson解析JSON数组响应

这是我对Web服务的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<SponsorsResult> getListOfSponsors(@Query("bill_id") String billId , @Query("session") String session, @Query("fields") String field);

}

这是方法和响应的调用:

 ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);

Call<SponsorsResult> call = apiService.getListOfSponsors(AppConstants.ASSEMBLY_BILL_ID,AppConstants.SESSION,AppConstants.FIELD);

call.enqueue(new Callback<SponsorsResult>() {

@Override

public void onResponse(Call<SponsorsResult> call, Response<SponsorsResult> response) {

Log.d(TAG,"Number :"+response.raw());

List<Sponsor> sponsors = response.body().getSponsors();

Log.d(TAG,"Number of sponsors :"+ sponsors.size());

}

@Override

public void onFailure(Call<SponsorsResult> 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<List<SponsorsResult>> getStatesAndDistrict(

@Field("xyz") String field1

);

Call <List<SponsorsResult>> call = service.getSponsorsValue();

call.enqueue(new Callback<List<SponsorsResult>>() {

@Override

public void onResponse(Call<List<SponsorsResult>> call, Response<List<SponsorsResult>> response) {

List<SponsorsResult> rs = response.body();

}

@Override

public void onFailure(Call<List<SponsorsResult>> call, Throwable t) {

}

});

class SponsorsResult {

@SerializedName("sponsors")

private List<SponsorsValue> sponsors;

public List<SponsorsValue> 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;

}

}

如果您遇到任何问题,请告诉我。

以上是 使用Retrofit和Gson解析JSON数组响应 的全部内容, 来源链接: utcz.com/qa/406069.html

回到顶部