JSON字符串是{"status":0}
或{"status":300}
以及Java类
public class MyResponse {
private Integer status;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "MyResponse{" +"status=" + status +'}';
}
}
当status字段为Integer时,对于所有传入值,它将转换为null。当它是int类型时,只有0被正确反序列化。其他值将转换为null。
我错过了什么?
以下是我尝试反序列化的方法
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting().create();
gson.fromJson(json.toString(), MyResponse.class);
答案 0 :(得分:4)
您需要删除setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
。
如果你离开它,那么它希望你的班级中的字段被命名为Status
,而不是documention中所述的status
:someFieldName ---> SomeFieldName