Jackson使用JsonFilter注解过滤字段

本文介绍了如何使用Jackson的JsonFilter注解进行字段过滤,包括忽略指定字段、序列化指定字段、过滤对象的字段,以及自定义过滤器。JsonFilter提供了在序列化时动态指定过滤规则的灵活性,支持包含和排除方式,并可通过自定义过滤器实现复杂规则。
摘要由CSDN通过智能技术生成

通过《Jackson忽略字段不序列化字段的3种方法》一讲我们知道,JsonIgnore和JsonIgnoreProperties都可以用来忽略掉指定的字段。

这两个注解有个共同点,就是都在添加注解后就指明了需要过滤的字段。如果想要在序列化的时候,才指定需要过滤的字段,那么可以使用JsonFilter注解来实现。

本篇内容基于Jackson 2.11.2版本,马上开始学习吧。

过滤类的字段

为需要过滤字段的类添加JsonFilter注解。

@JsonFilter("myFilter")
public class Animal {
   

	private String name;
	private int sex;
	private Integer weight;
	
	// 省略getter、setter方法

	@Override
	public String toString() {
   
		return "Animal [name=" + name + ", sex=" + sex + ", weight=" + weight + "]";
	}

}

忽略指定字段

创建一个不序列化sex和weight的过滤器SimpleBeanPropertyFilter,再将这个过滤器和ID为myFilter的注解进行关联,最后将过滤器应用于ObjectMapper。

最终的效果,就是使得被@JsonFilter(“myFilter”)注解的类,在类对象被序列化时,不序列化sex和weight。

/**
 * 忽略指定的字段
 * 
 * @throws JsonProcessingException
 */
@Test
public void filterExclude() throws JsonProcessingException {
   
	Animal animal = new Animal();
	animal.setName("sam");
	animal.setSex(1);
	animal.setWeight(100);
	
	ObjectMapper mapper = new ObjectMapper();
	
	// 创建一个不序列化sex和weight的过滤器
	SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.serializeAllExcept("sex", "weight");
	// 将上面的过滤器和ID为myFilter的注解进行关联
    FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", filter);
 
	System.out.print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值