我需要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/

10-11 22:44
查看更多