2017-08-01 256 views
0

我需要与GSON库的帮助,基本上我有反序列化这样定义一个包装类: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); 
} 

的问题是去SER ialization方面,我不应该重新实例化WrapperClass对象,因为它已经在默认情况下,我只需要反序列化它的值,这可能与此gson库?

+0

你能告诉我们你在反序列化方面有什么吗? – Jonathan

+0

@Jonathan这就是问题!我不知道如何反序列化json而无需重新实例化WrapperClass,因为它已经在对象中 – Emax

回答

1

所以,你想要做什么:“阅读”一些JSON字符串的内容和“覆盖”现有的对象。

我不知道有内置的方法来做到这一点。除此之外:在的覆盖下做一些这种复杂性听起来也是错误的方法。

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

  • 读取JSON数据,并在去序列化对象中的信息反序列化到一个或多个对象
  • 然后有一个另一特殊的组件“更新”你的“老”对象