zoukankan      html  css  js  c++  java
  • jackson实体转json时 为NULL不参加序列化的汇总

    首先加入依赖

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>

    方法一、实体上使用 @JsonInclude(JsonInclude.Include.NON_NULL)

    1、如果放在属性上,如果该属性为NULL则不参与序列化 ;

    2、如果放在类上,那对这个类的全部属性起作用 ;

    参数意义:

    • JsonInclude.Include.ALWAYS              默认
    • JsonInclude.Include.NON_DEFAULT     属性为默认值不序列化
    • JsonInclude.Include.NON_EMPTY         属性为 空(””) 或者为 NULL 都不序列化
    • JsonInclude.Include.NON_NULL           属性为NULL   不序列化

    使用之前

    使用之后

    方法二、 如果不想每次都这样添加,可以在application.yml配置全局定义, 这种默认都生效

    spring:
    
       jackson:
    
            default-property-inclusion: non_null

    方法三、通过ObjectMapper 对象进行设置,下面是测试用例

    @Test
    public  void  test() throws JsonProcessingException {
        ResultVo resultVo = new ResultVo();
        resultVo.setCode(0);
        resultVo.setMsg("成功");
    
        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);//默认
        String json = mapper.writeValueAsString(resultVo);
        System.out.println(json);
    
        mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); //属性为NULL不序列化
        json = mapper.writeValueAsString(resultVo);
        System.out.println(json);
    
        Map map = new HashMap();
        map.put("code",0);
        map.put("msg","成功");
        map.put("data",null);
        json = mapper.writeValueAsString(map);
        System.out.println(json);
    }

    打印如下:

    {"code":0,"msg":"成功","data":null}
    {"code":0,"msg":"成功"}
    {"msg":"成功","code":0,"data":null}

    注意:ObjectMapper 只对VO起作用;对Map List不起作用

    1、如果必定返回的字段,可以在实体类一开始就给默认值(如字符串 ”” ; list [] ),来避免null

    2、jackson实体转json时,某个属性不参加序列化时 使用@JsonIgnore 放在该属性上

  • 相关阅读:
    win8 win10 安装msi 提示2502、2503的错误代码
    本地wamp的Internal Server Error错误解决方法
    安卓客户端测试总结
    测试bug级别定义
    测试流程
    测试人员的分工
    web安全测试-AppScan使用分享
    性能测试-小计
    0基础学java_字节流和字符流
    0基础学java_通配符
  • 原文地址:https://www.cnblogs.com/liaojie970/p/8995050.html
Copyright © 2011-2022 走看看