3

是否有一个选项(除了编写自定义序列化器/反序列化器)GSON library序列化/反序列化超出某种级别的扩展类。

例如看下面的用例

class FirstClass {
    int firstVariable;
}

class SecondClass extends FirstClass {
    int secondVariable;
}

class ThirdClass extends SecondClass {
    int thirdVariable;
}

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

4

2 回答 2

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 添加到反序列化。

于 2012-11-30T01:10:21.783 回答
0

下面的示例可以帮助在序列化期间跳过类中的某个变量

if (fieldAttributes.getDeclaringClass() == Example.class )
                && fieldAttributes.getName().equals("example")) {
            return true;
        }
于 2021-12-09T05:25:50.420 回答