问题
以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
其他常用注解介绍
@JsonIgnore
作用在字段或方法上,用来完全忽略被注解的字段和方法对应的属性。
@JsonProperty
作用在字段或方法上,用来对属性的序列化/反序列化,可以用来避免遗漏属性,同时提供对属性名称重命名
@JsonIgnoreProperties
作用在类上,用来说明有些属性在序列化/反序列化时需要忽略掉,可以将它看做是@JsonIgnore的批量操作。
可以注明是想要忽略的属性列表如@JsonIgnoreProperties({“name”,”age”,”title”}),
也可以注明过滤掉未知的属性如@JsonIgnoreProperties(ignoreUnknown=true)
public class ProductVO implements Serializable {
private static final long serialVersionUID = 7097863777546530545L;
@JsonProperty("name")
private String categoryName;
@JsonProperty("type")
private Integer categoryType;
@JsonProperty("foods")
private List<ProductInfoVO> productInfoVOList;
}
……
博文参考了 jackson实体转json时 为NULL不参加序列化的汇总