2017-06-17 67 views
0

当我试图从web服务得到这样的结果:使用此代码改造得到JsonSyntaxException错误

{ 
    "bankInfo": 
    [ 
     { 
      "id": "2", 
      "title": "BANK A", 
      "alias": "A" 
     }, 
     { 
      "id": "3", 
      "title": "BANK B", 
      "alias": "B" 
     }, 
     { 
      "id": "4", 
      "title": "BANK C", 
      "alias": "C" 
     } 
    ] 
} 

ActiveBanks activeBanks = new ActiveBanks(); 

Call<ActiveBanks> call = behandamService.activeBanksCall(activeBanks); 
call.enqueue(new Callback<ActiveBanks>() { 
    @Override 
    public void onResponse(Call<ActiveBanks> call, final Response<ActiveBanks> response) { 
     if (response.isSuccessful()) { 

     } 
    } 
    @Override 
    public void onFailure(Call<ActiveBanks> call, Throwable t) { 
     t.printStackTrace(); 
     if (t.getMessage() != null) Log.e("ActiveBanks: ", t.getMessage()); 
    } 
}); 

ActiveBanks结构:

public class ActiveBanks { 
    private JSONArray bankInfo; 

    public ActiveBanks() { 
    } 

    public JSONArray getBankInfo() { 
     return bankInfo; 
    } 

    public void setBankInfo(JSONArray bankInfo) { 
     this.bankInfo = bankInfo; 
    } 
} 

我得到这个错误:

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

不清楚为什么你试图解析JSON回'JSONArray'。你需要一个'List'类而不是 –

回答

1

你必须chnage模型类这样的:

public class BankInfo { 

@SerializedName("id") 
@Expose 
private String id; 
@SerializedName("title") 
@Expose 
private String title; 
@SerializedName("alias") 
@Expose 
private String alias; 

public String getId() { 
return id; 
} 

public void setId(String id) { 
this.id = id; 
} 

public String getTitle() { 
return title; 
} 

public void setTitle(String title) { 
this.title = title; 
} 

public String getAlias() { 
return alias; 
} 

public void setAlias(String alias) { 
this.alias = alias; 
} 

} 

及主要模型类:

public class ActiveBanks{ 

@SerializedName("bankInfo") 
@Expose 
private List<BankInfo> bankInfo = null; 

public List<BankInfo> getBankInfo() { 
return bankInfo; 
} 

public void setBankInfo(List<BankInfo> bankInfo) { 
this.bankInfo = bankInfo; 
} 

} 
+0

这是不正确的。 json是一个对象,而不是一个列表 –

+0

对,在json格式有问题 –

+0

我明白了。随意编辑您的答案以纠正问题 –