【发布时间】:2016-04-28 16:14:00
【问题描述】:
我有以下 Json 响应:
{"StatusCode":2,"Error_fields":[{"user":"XXX"},{"password":"YYY"}]},我必须使用 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;
}
并且我还添加了错误字段: 错误字段.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 对象键,它将失败,并且添加所有建议的注释以期望它是否存在并不是一个好的解决方案,我也尝试过这样做 @987654324 @ as List<JsonObject> 和返回空值的结果相同,但它将“2”计为数组大小!?
【问题讨论】:
-
你的错误看起来更像是地图而不是对象
-
@njzk2 感谢您的回答,但我之前已经尝试过,当我将 List 更改为 JsonArray 时,我得到了 JsonSyntaxException
-
嗨,我明白了你的意思,我第一次不明白,但现在我把它改成了 List