今天看到一篇文章,里面介紹了如何自定義返回json字段,感覺挺好用的,這里學習一下。
實現工具類:
/**
* @author fengzp
* @date 17/2/20上午10:34
* @email fengzp@gzyitop.com
* @company 廣州易站通計算機科技有限公司
*/
public class JsonFilter {
private static final String INCLUDE = "JSON_INCLUDE";
private static final String EXCEPT = "JSON_EXCEPT";
@com.fasterxml.jackson.annotation.JsonFilter(INCLUDE)
interface MyJsonInclude {}
@com.fasterxml.jackson.annotation.JsonFilter(EXCEPT)
interface MyJsonExcept {}
public static String mapper(Object bean, Class<?> clazz, String include, String except) throws JsonProcessingException {
if(clazz == null)
return null;
ObjectMapper mapper = new ObjectMapper();
if(StringUtils.hasText(include)){
mapper.setFilterProvider(new SimpleFilterProvider().addFilter(INCLUDE,
SimpleBeanPropertyFilter.filterOutAllExcept(include.split(","))));
mapper.addMixIn(clazz, MyJsonInclude.class);
}
if(StringUtils.hasText(except)){
mapper.setFilterProvider(new SimpleFilterProvider().addFilter(EXCEPT,
SimpleBeanPropertyFilter.serializeAllExcept(except.split(","))));
mapper.addMixIn(clazz, MyJsonExcept.class);
}
return mapper.writeValueAsString(bean);
}
}
測試:
public class User {
private Integer id;
private String userName;
private String password;
private String realName;
private Boolean status;
private String email;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createdAt;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedAt;