jackson dynamic filter
来源:互联网 发布:json嵌套解析 编辑:程序博客网 时间:2024/05/16 08:32
import java.io.IOException;import java.util.HashSet;import java.util.Set;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.map.annotate.JsonFilter;import org.codehaus.jackson.map.ser.FilterProvider;import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;/** * * @author Administrator */@JsonFilter("myFilter")class Bean { private String name = "2"; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } private int age = 3; public static void main(String[] args) throws IOException { Bean value = new Bean(); // first, construct filter provider to exclude all properties but 'name', bind it as 'myFilter' ObjectMapper mapper = new ObjectMapper(); FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", SimpleBeanPropertyFilter.filterOutAllExcept(getFilter(value))); // and then serialize using that filter provider: String json = mapper.filteredWriter(filters).writeValueAsString(value); System.out.println(json); } private static Set<String> getFilter(Bean value) { Set<String> set = new HashSet(); if (value.getName() != null) { set.add("name"); // set.add("age"); } return set; }}