除了某些级别的扩展类之外,GSON library
中的选项(除了编写自定义序列化器/反序列化器除外) NOT 序列化/反序列化。
例如,请参阅以下用例
class FirstClass {
int firstVariable;
}
class SecondClass extends FirstClass {
int secondVariable;
}
class ThirdClass extends SecondClass {
int thirdVariable;
}
现在使用fromJson
和toJson
时,我只想序列化/反序列化层次结构中的前两个类 - ThirdClass
和SecondClass
。这意味着它会忽略整个FirstClass
(以及firstVariable
),因为它已经在level 3
。
答案 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。