1. 程式人生 > >jackson實體轉json時 為NULL不參加序列化的匯總

jackson實體轉json時 為NULL不參加序列化的匯總

ica writev ber src 配置 () 全局 rgb 使用

首先加入依賴
<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);
    }

打印如下:

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




jackson實體轉json時 為NULL不參加序列化的匯總