这个注解的作用是java bean在序列化成json的时候过滤掉指定的属性,即指定的属性不在json中显示,不过这个方法用法比较麻烦,我还是建议用@JsonIgnore这个注解的,功能是差不多的。不过多会一种方法,多一种装逼的姿态的思想下,还是决定看下这个注解的用法。
@JsonFilter("userFilter") //在这里加注解并且指定过滤器的名称
public class User {
private String username;
private String password;
private Integer age;
}
public static void main(String[] args) throws IOException {
SimpleFilterProvider filterProvider = new SimpleFilterProvider();
filterProvider.addFilter("userFilter", //添加过滤器名称
SimpleBeanPropertyFilter.serializeAllExcept("username", "password")); //这里指定不序列化的属性
/* Set exclude = new HashSet(); exclude.add("username"); exclude.add("password"); filterProvider.addFilter("userFilter", SimpleBeanPropertyFilter.serializeAllExcept(exclude)); //这里指定不序列化的属性也可以放到Set集合里面 filterProvider.addFilter("userFilter", SimpleBeanPropertyFilter.serializeAll()); // serializeAll()序列化所有属性, filterProvider.addFilter("userFilter", SimpleBeanPropertyFilter.filterOutAllExcept("age")); //只序列化这里包含的属性*/
ObjectMapper mapper = new ObjectMapper();
mapper.setFilterProvider(filterProvider);
User user = new User();
user.setUsername("小明");
user.setPassword("123");
user.setAge(18);
String s = mapper.writer().withDefaultPrettyPrinter().writeValueAsString(user);
System.out.println("我是序列化" + s);
User user1 = mapper.readValue("{\"username\":\"小明\",\"password\":\"123\",\"age\":18}", User.class);
System.out.println("我是反序列化" + user1); //这里注意只是在序列化的时候过滤字段,在反序列化的时候是不过滤的
}
下面是输出
我是序列化{
"age" : 18
}
我是反序列化User{username='小明', password='123', age=18}
当然这个注解也可以加在字段上面,用法是一样的,感兴趣的自己去测试下。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44130081/article/details/89639249
内容来源于网络,如有侵权,请联系作者删除!