2016-04-28 38 views
-1

解析我有以下JSON响应为:JSON数组使用GSON

{ “的StatusCode”:2 “Error_fields”:[{ “用户”: “XXX”},{ “密码”: “YYY” }]},以及i必须解析使用GSON该响应,所以我已经建立了ResponseBase的类如下:

BaseResponse.java

@SerializedName("StatusCode") 
    private int StatusCode; 

    @SerializedName("Error_fields") 
    List<ErrorField> Erro; 

    public void setStatusCode(int statusCode){ 
     this.StatusCode=statusCode; 
    } 

    public int getStatusCode(){ 
     return this.StatusCode; 
    } 

    public List <ErrorField> getErro() { 
     return Erro; 
    } 

    public void setErro(List <ErrorField> erro) { 
     Erro = erro; 
    } 

和此外,我已经添加了错误的字段为: ErrorField .java

public class ErrorField { 

    String ErrorTitle; 

    String ErrorMessage; 

    public String getErrorTitle() { 
     return ErrorTitle; 
    } 

    public void setErrorTitle(String errorTitle) { 
     ErrorTitle = errorTitle; 
    } 

    public String getErrorMessage() { 
     return ErrorMessage; 
    } 

    public void setErrorMessage(String errorMessage) { 
     ErrorMessage = errorMessage; 
    } 
} 

所以为了,能够正确地接收JSON数组,我一定要添加注释到ErrorTitle是:

@SerializedName("password") 
    String ErrorTitle; 

所以在我的情况下,不知道返回的JSON对象键的它会失败,并不是一个很好的解决方案来添加所有建议的注释是否存在或不存在,我也试图将List<ErrorField>设置为List<JsonObject>,并且返回相同的结果为空值,但它将数组大小计为“2”! ?

+0

你的错误看起来像地图超过对象 – njzk2

+0

@ njzk2感谢你的答案,但我已经尝试过,我得到了JsonSyntaxException,这是相同的,当我将列表更改为JsonArray –

+0

嗨,我明白你的意思,我不明白它的第一次,但现在我已经改变了到List > Errro;它的工作原理,谢谢。 –

回答

0

问题,通过改变List<ErroField>

List<Map<String,String>> Errro; 

解决,它与返回的JSON对象的动态范围工作,而不取决于密钥的