前言简单使用
1.@JsonIgnore——单一属性控制2.@JsonFormat(pattern = "yyyy-MM-dd")3.@JsonInclude(JsonInclude.Include.NON_NULL)4.全局控制代码5.补:把值为null的属性修改为""写出 依赖
前言当使用com.fasterxml.jackson.databind.ObjectMapper.writevalueAsString(Object) 将JavaBean实体转换为json的时候,怎么忽略掉某些属性不参与序列化等。
常见场景:
a. 值为空或值为空字符串的属性不参加序列化
b. 某实体在转json时不参加序列化
c. 日期格式化
d. 实体内非属性字段,但是以is开头的方法(isXXX/is_XXX),别的方法未发现看之前可以先参考一下另一篇文章,作为com.alibaba.fastjson和ObjectMapper的对比
简单说 Fastjson 定制序列化 + 自定义序列化.
简单使用
首先说明,用 ObjectMapper 转换json的
(1)实体转json时,值为空字符串和null的属性都没有排除
(2)实体里is开头的方法(isXXX/is_XXX)会被当作属性转换到json里
接下来就简单说一点常用的基础应用
1.@JsonIgnore——单一属性控制
实体里的属性上或方法上加注解即可不序列化
2.@JsonFormat(pattern = “yyyy-MM-dd”)
属性上加注解可格式化日期,只需注意别用错了,否则有用别的包下的不生效
com.fasterxml.jackson.annotation.JsonFormat3.@JsonInclude(JsonInclude.Include.NON_NULL)
将注解放在属性上,如果该属性为NULL则不参与序列化
如果放在类上边,那对这个类的全部属性起作用
Include.NON_NULL 属性为NULL 不序列化
Include.NON_EMPTY 属性为 空字符串或者为 NULL 都不序列化
Include.Include.ALWAYS 默认
Include.NON_DEFAULT 属性为默认值不序列化
4.全局控制代码
MapperFeature.AUTO_DETECT_IS_GETTERS
全局控制排除is开头的方法objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS,false);其他的直接看图吧:
5.补:把值为null的属性修改为""写出
ObjectMapper objectMapper = new ObjectMapper();
// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));//日期格式化
objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS,false);//排除is开头的方法
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer
依赖
2.9.8
com.fasterxml.jackson.core jackson-annotations ${jackson.version} com.fasterxml.jackson.core jackson-core ${jackson.version} com.fasterxml.jackson.core jackson-databind ${jackson.version}



