使用Retrofit& amp; amp; amp; amp; amp; GSON [英] Parse JSON array response using Retrofit & 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; GSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!