我想阻止 Gson 序列化特定类型的字段。为此,我制定了排除策略。排除策略确实成功地识别了正在处理相关类的时间,并且成功地排除了它。不幸的是,它阻止我序列化该类的对象,即使它们是根。我的意思是它们是传递给 gson.toJson() 方法的参数。
更清楚地说,我有一个 Person 类型的类,其类字段本身涉及 Person 类型。我不想序列化 Person 类型的类字段。
public class Person{
private Person child;
private String name;
}
因此,在上面的示例中,我想要一个包含 name
字段但不包含 child
字段的 json 对象。我希望解决方案对字段类型敏感,而不是字段名称。
最佳答案
ExclusionStrategy
定义了两种方法,一种用于排除类型,另一种用于排除字段。只需使用 field 方法即可跳过 Person
类型的任何字段。
class PersonExcluder implements ExclusionStrategy {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaredType().equals(Person.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
}
然后使用注册它
Gson gson = new GsonBuilder().setExclusionStrategies(new PersonExcluder()).create();
关于java - gson排除策略仅适用于目标对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427728/