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版权协议,转载请附上原文出处链接和本声明。