我需要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库吗?
最佳答案
因此,您想做的是:“读取”一些JSON字符串的内容,并用它“覆盖”现有对象。
我不知道这样做的内置方法。除此之外,在幕后进行如此复杂的操作听起来也似乎是错误的方法。
因此,我的建议是:明确区分这些责任。含义:与其创建一个将JSON数据“合并”到现有对象中的解决方案(几乎是违反直觉的):而是明确地执行此操作,而是逐步进行。喜欢:
读取JSON数据并反序列化为一个或多个对象
然后使用另一个特殊组件,使用反序列化对象中找到的信息来“更新”您的“旧”对象
关于java - Gson,反序列化包装器类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45431357/