自定義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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM