【问题标题】:Gson deserialization to java object does not workGson 反序列化到 java 对象不起作用
【发布时间】:2014-08-11 01:40:14
【问题描述】:

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 +'}';
    }
}

当状态字段是整数时,所有传入值都将转换为 null。当它是 int 类型时,只有 0 被正确反序列化。其他值转换为 null。

我错过了什么?

这是我尝试反序列化的方式

Gson gson = new GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
    .setPrettyPrinting().create();
gson.fromJson(json.toString(), MyResponse.class);

【问题讨论】:

  • 你能把你反序列化的代码贴出来吗?
  • 你试过评论setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)吗?

标签: java json serialization deserialization gson


【解决方案1】:

您需要删除setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)

如果你离开它,那么它希望你的类中的字段被命名为Status,而不是status,如documention中所述:someFieldName ---> SomeFieldName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多