使用Retrofit& amp; amp; amp; amp; amp; GSON [英] Parse JSON array response using Retrofit & Gson

查看:163
本文介绍了使用Retrofit& amp; amp; amp; amp; amp; GSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的Web服务的JSONArray Response:

  [
{
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 :coponsorsor,
name:BARRON,
committee_id:null
},
{
leg_id:NYL000341,
type:cosponsor,
name:WALKER
},
{
leg_id:NYL000355,
键入:cosponsor,
name:BLAKE
},
{
leg_id:NYL000185,
type:共同发起人,
name:RODRIGUEZ
},
{
leg_id:NYL000259,
type:cosponsor,
name:FAHY
},
{
leg_id:NYL000203,
type:cosponsor,
名称:TITONE
},
{
leg_id:NYL000286,
type:cosponsor,
name: MCDONALD

$ bleg_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,
键入:cosponsor,
name:SOLAGES
},
{
leg_id:NYL000357,
type:共同发起人,
name:RICHARDSON
},
{
leg_id:NYL000324,
type:cosponsor,
姓名:P ICHARDO

{
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
},
{
赞助商:[
{
leg_id:NJL000113,
type:primary,
name:Vainieri Huttle,Valerie
}
] ,
id:NJB00038817
},
{
赞助商:[
{
leg_id:NYL000208,
type:primary,
name:WEPRIN
}
],
id:NYB00066288
},
{
赞助商:[
{
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
$ b $ leg_idNJL000164
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
$ bid:NJB00030216
},
{
赞助商:[
{
leg_id:NYL000088,
official_type:SPONSOR,
type:primary,
name:Clark
},

leg_id:NYL000171,
official_type:COSPNSR,
type:cosponsor,
name:Perry


id:NYB00035573
},
{
赞助商:[
{
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
$ bid:NJB00021785
},
{
赞助商:[
{
leg_id:NYL000138,
official_type:SPONSOR,
type:primary,
name:Lentol
}

id:NYB00010409
},
{
赞助商:[
{
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
$ bid:NJB00002928
},
{
赞助商:[
{
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);

}

这里是调用方法&响应:
$ b $ pre $ ApiInterface apiService = ApiClient.getClient()。create(ApiInterface.class);

呼叫&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,赞助商数量:+ sponsors.size());
}

@Override
public void onFailure(Call< SponsorsResult> call,Throwable t){
t.printStackTrace();
}
});

到目前为止,它失败&这里是logcat输出:

  com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT,但是BEGIN_ARRAY在行1列2路径

无法执行响应。指导我解析这个回应。

  @FormUrlEncoded 
@POST(api / sponsors)
呼叫< List< SponsorsResult>> getStatesAndDistrict(
@Field(xyz)String field1
);



呼叫< List< SponsorsResult>> call = service.getSponsorsValue();
$ b 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>赞助商;

公共列表< SponsorsValue> getSponsors(){
返回赞助商;


$ b $ class SponsorsValue {
@SerializedName(leg_id)
@Expose
private String legId;
@SerializedName(type)
@Expose
private String type;
@SerializedName(name)
@Expose
私人字符串名称;

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;
}

}

请让我知道你是否面临任何问题。


Here is my JSONArray Response from Web service:

[
  {
    "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"
  }
]

Here is ApiInterface.java

    public interface ApiInterface {

    @GET("bills/")
    Call<SponsorsResult> getListOfSponsors(@Query("bill_id") String billId , @Query("session") String session, @Query("fields") String field);

}

And here is call of method & response :

 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();
                    }
                });

As of now it fails & here is logcat output :

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

It fails to execute response . Guide me to parse this response.

解决方案

Please try to use this one

    @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;
    }

}

Please let me know if you are facing any issue.

这篇关于使用Retrofit&amp; amp; amp; amp; amp; amp; GSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆