自定义JSON返回字段

今天看到一篇文章,里面介绍了如何自定义返回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;

posted @ 2017-02-20 10:55  fengzp  阅读(2110)  评论(0编辑  收藏  举报