• Jackson2.1.4 序列化对象时,过滤null的属性 empty的属性 default的属性


    在进行序列化如何过滤为null的属性,empty的属性,或者default的属性。

    一、全局注册 objectMapper.setSerializationInclusion(Include.ALWAYS);

    二、具体类上打注解

    @JsonSerialize(include = Inclusion.NON_NULL)
    public class MyTypeWithoutNulls
    {
        public String mayHaveValue; // will not be included if value is null
    }

    三、具体属性上打注解

    @JsonInclude(Include.NON_NULL)
    public Date getBirthday() {
      return birthday;
    }

    测试用例

    public class User {
    private int id;
        
        private String name;
        
        private Date birthday;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    //将该标记放在属性上,如果该属性为NULL则不参与序列化 //如果放在类上边,那对这个类的全部属性起作用 //Include.Include.ALWAYS 默认 //Include.NON_DEFAULT 属性为默认值不序列化 //Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化 //Include.NON_NULL 属性为NULL 不序列化 @JsonInclude(Include.NON_NULL) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
    //测试方法
    ObjectMapper mapper = new ObjectMapper();
    User user = new User(1,"jack",null);
    String outJson = mapper.writeValueAsString(user);
    System.out.println(outJson);
    //测试结果
    //{"id":1,"name":"jack"}
    ObjectMapper mapper = new ObjectMapper();
    //通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
    //Include.Include.ALWAYS 默认
    //Include.NON_DEFAULT 属性为默认值不序列化
    //Include.NON_EMPTY 属性为 空(“”)  或者为 NULL 都不序列化
    //Include.NON_NULL 属性为NULL 不序列化
    mapper.setSerializationInclusion(Include.NON_NULL);
    User user = new User(1,"",null);
    String outJson = mapper.writeValueAsString(user);
    System.out.println(outJson);
  • 相关阅读:
    js 页面按钮提交后 创建显示loading div 操作完成后 再隐藏或删除 进度div
    [转]利用vertical-align:middle实现在整个页面居中
    IP地址查询
    [转]js 判断js函数、变量是否存在
    [转]RDLC报表格式化format表达式
    [转]不用安装Oracle Client如何使用PLSQL Developer
    [转]使用 YCombo 做 JS /CSS开发 合并 压缩
    [转]jQuery为控件添加水印文字
    [转]DataTable用中使用Compute 实现简单的DataTable数据的统计
    [转]Web性能监控自动化探索之路–初识WebPageTest
  • 原文地址:https://www.cnblogs.com/daxin/p/3277758.html
Copyright © 2020-2023  润新知