Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson,反序列化包装器类_Java_Gson_Wrapper - Fatal编程技术网

Java 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 =

我需要gson库的帮助,基本上我必须反序列化如下定义的包装器类:

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数据并反序列化为一个或多个对象
  • 然后让另一个特殊组件使用反序列化对象中的信息“更新”您的“旧”对象

你能告诉我们你在反序列化方面有什么吗?@Jonathan这就是问题所在!我不知道如何在不重新实例化包装器类的情况下反序列化json,因为它已经在对象中了