首页 文章

gson排除策略仅适用于目标对象的字段

提问于
浏览
0

我想阻止Gson序列化特定类型的字段 . 为此,我创建了一个排除策略 . 排除策略确实成功识别出有问题的类何时被处理并且成功排除它 . 不幸的是,它阻止我序列化该类的对象,即使它们是根 . 我的意思是他们是传递给gson.toJson()方法的参数 .

为了更清楚,我有一个Person类的类,其类字段本身涉及Person类型 . 我不想序列化Person类的类字段 .

public class Person{
   private Person child;
   private String name;
}

所以,在上面的例子中,我想要一个包含 name 字段而不是 child 字段的json对象 . 我希望解决方案对字段的类型敏感,而不是字段名称 .

1 回答

  • 1

    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();
    

相关问题