Skip to content

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配置,因为简单

第二种方式没怎么用过,不了解这种方式的优点

一个项目里俩种方式都有的话,第二种会覆盖第一种

如有转载或 CV 的请标注本站原文地址