GSON不会序列化/反序列化扩展类

sve*_*ija 2 java gson

是否有一个选项(除了编写自定义的串行/解串器)GSON library,以序列化/反序列化以后扩展类的一些水平.

例如,请参阅以下用例

class FirstClass {
    int firstVariable;
}

class SecondClass extends FirstClass {
    int secondVariable;
}

class ThirdClass extends SecondClass {
    int thirdVariable;
}
Run Code Online (Sandbox Code Playgroud)

现在使用时fromJson,toJson我只想序列化/反序列化层次结构中的前两个类 - ThirdClassSecondClass.这意味着它会忽略整个FirstClass(以及firstVariable它),因为它已经存在了level 3.

Jon*_*ler 6

你不能一般地排除TopLevel类,你可以做的是使用ExclusionStrategy:

  private static final Gson GSON = new GsonBuilder().addSerializationExclusionStrategy(new ExclusionStrategy() {
    @Override
    public boolean shouldSkipField(FieldAttributes f) {
        return f.getDeclaringClass().equals(FirstClass.class);
    }

    @Override
    public boolean shouldSkipClass(Class<?> clazz) {
        return false;
    }
  }).create();
Run Code Online (Sandbox Code Playgroud)

您还可以将DeclusionStrategy添加到反序列化.