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

时间:2012-11-30 00:45:51

标签: java gson

除了某些级别的扩展类之外,GSON library中的选项(除了编写自定义序列化器/反序列化器除外) NOT 序列化/反序列化。

例如,请参阅以下用例

class FirstClass {
    int firstVariable;
}

class SecondClass extends FirstClass {
    int secondVariable;
}

class ThirdClass extends SecondClass {
    int thirdVariable;
}

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

1 个答案:

答案 0 :(得分: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();

您还可以在反序列化中添加ExclusionStrategy。