Gson,Deserialize Wrapper类

时间:2017-08-01 07:19:39

标签: java gson wrapper

我需要gson库的帮助,基本上我必须反序列化一个这样定义的包装类:

static class WrapperClass {
    public int value;
    private final String otherData;

    public WrapperClass(String otherData) {
        this.otherData = otherData;
    }

}

我必须参加的课程" jsonize"有这样的字段:

private final WrapperClass wrappedData = new WrapperClass("other data");

包装类的序列化非常简单:

@Override
public JsonElement serialize(WrapperClass src, Type typeOfSrc, JsonSerializationContext context) {
    return context.serialize(src.value);
}

问题在于反序列化方面,我不应该重新实例化WrapperClass对象,因为默认情况下它已经存在,我只需要反序列化它的值,它就是'使用gson库可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

那么,你想做什么:“读取”一些JSON字符串的内容,并用它“覆盖”现有对象。

我不知道有这样做的内置方法。除此之外:做一些复杂的事情在幕后听起来也是错误的做法。

因此,我的建议是:明确区分这些责任。含义:不是创建一个(几乎是反直觉的)解决方案,将JSON数据“合并”到现有对象中:一步一步地明确地做到这一点。像:

  • 读取JSON数据并反序列化为一个或多个对象
  • 然后让另一个特殊组件使用反序列化对象中的信息“更新”您的“旧”对象