Jackson输出指定字段

Jackson输出指定字段:
步骤:
1.创建ObjectFilterMixIn类
/**
*
* @Package: com.cmf.diccer.task
* @author: ex-qxg001
* @date: 2018年6月15日上午10:46:52
*/
package com.cmf.diccer.task;

import com.fasterxml.jackson.annotation.JsonFilter;

/**
* @Description: TODO
* @author ex-qxg001
* @date 2018年6月15日上午10:46:52
*/
@JsonFilter("objectFilter")
public interface ObjectFilterMixIn {

}
注:1.ObjectFilterMixln接口上必须要有@JsonFilter注解;
2.接口名可以随意取,注解内的值也可以随意取;
2.定义一个获取FilterProvider的类GetFilterProvider
package com.cmf;

import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;

public class GetFilterProvider {

public static FilterProvider filter(String filterName, String... propertyes) {
// 过滤不想要的
/*FilterProvider filter = new SimpleFilterProvider().addFilter(
filterName,
SimpleBeanPropertyFilter.serializeAllExcept(propertyes));*/
// 过滤想要的

FilterProvider filter = new SimpleFilterProvider().addFilter(
filterName, SimpleBeanPropertyFilter.filterOutAllExcept(propertyes));

return filter;
}
}
3.测试
package com.cmf;
import org.junit.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TestOne {
@Test
public void testTwo() throws Exception {
Person person = new Person(1,"mack",18);
ObjectMapper mapper = new ObjectMapper();
mapper.setFilterProvider(GetFilterProvider.filter("objectFilter", "id","name"));
mapper.addMixIn(Person.class, ObjectFilterMixIn.class);
System.out.println(mapper.writeValueAsString(person));
}
}
注:1. 代码(mapper.setFilterProvider(GetFilterProvider.filter("objectFilter", "id","name"));)中filter的第一个参数必须与ObjectFilterMixIn接口上注解中的值保持一致;

版权声明:本文为luck_qxg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。