Java Gson,反序列化包装器类
我需要gson库的帮助,基本上我必须反序列化如下定义的包装器类:Java Gson,反序列化包装器类,java,gson,wrapper,Java,Gson,Wrapper,我需要gson库的帮助,基本上我必须反序列化如下定义的包装器类: static class WrapperClass { public int value; private final String otherData; public WrapperClass(String otherData) { this.otherData = otherData; } } private final WrapperClass wrappedData =
static class WrapperClass {
public int value;
private final String otherData;
public WrapperClass(String otherData) {
this.otherData = otherData;
}
}
private final WrapperClass wrappedData = new WrapperClass("other data");
我必须“jsonize”的类有如下字段:
static class WrapperClass {
public int value;
private final String otherData;
public WrapperClass(String otherData) {
this.otherData = otherData;
}
}
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库实现吗?那么,您要做的是:“读取”某个JSON字符串的内容并用它“覆盖”现有对象
我不知道有什么内在的方法可以做到这一点。除此之外:在幕后做这样复杂的事情听起来也是错误的做法
因此,我的建议是:明确区分这些责任。意思:不要创建一个(几乎违反直觉的)将JSON数据“合并”到现有对象的解决方案:显式地这样做,而是一步一步地进行。比如:
- 读取JSON数据并反序列化为一个或多个对象
- 然后让另一个特殊组件使用反序列化对象中的信息“更新”您的“旧”对象