Jackson
Jackson是SpringBoot自带的序列化框架,所以不用安装依赖就可以使用
常用注解
@JsonIgnore:可用于字段、getter/setter、构造函数参数上,作用相同,都会对相应的字段产生影响。使相应字段不参与序列化和反序列化
配置
有时候jackson的默认配置不满足需求,我们就可以自定义配置
jackson自定义配置有俩种:yml配置和自定义ObjectMapper的bean
yml配置
application.yml
yml
spring:
jackson:
# 前端传递的参数,在对象里没有定义,false不会序列化,true会序列化(报错,提示对象里没有定义)
deserialization:
fail-on-unknown-properties: false
# 变量名以下划线形式展示
# 前端传递的参数和返回的数据都是下划线形式
property-naming-strategy: SNAKE_CASE
# 日期返回时间戳
serialization:
write-dates-as-timestamps: true
备注
如果property-naming-strategy设置为SNAKE_CASE,那么前端传入的参数必须是下划线形式,如果是驼峰形式,后端是接收不到的
自定义ObjectMapper的bean
项目地址:misscmszb
CommonConfiguration.java
java
@Configuration
public class CommonConfiguration {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customJackson() {
return jacksonObjectMapperBuilder -> {
// 前端传递的参数,在对象里没有定义,false不会序列化,true会序列化(报错,提示对象里没有定义)
jacksonObjectMapperBuilder.failOnUnknownProperties(true);
// 返回的属性驼峰转换为小写加下划线
jacksonObjectMapperBuilder.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
};
}
}
备注
我一般用yml配置,因为简单
第二种方式没怎么用过,不了解这种方式的优点
一个项目里俩种方式都有的话,第二种会覆盖第一种