使用Gson替换Jackson作为SpringBoot的json序列化库

使用Gson替换Jackson作为SpringBoot的json序列化库

之前一直用,Fastjson,但是最近它又㕛叒叕出现了漏洞。于是想起了Gson,可以作为它的替代。

Gson

Github

在SpringBoot 中替换Jackson

添加Gson依赖 & 排除默认的Jackson依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-json</artifactId>
		</exclusion>
	</exclusions>
</dependency>

<dependency>
	<groupId>com.google.code.gson</groupId>
	<artifactId>gson</artifactId>
</dependency>

修改 @SpringApplication,不加载Jackson的自动配置

@SpringBootApplication(exclude = {JacksonAutoConfiguration.class})

添加配置

# 设置json的首选序列化框架为 gson
spring.http.converters.preferred-json-mapper=gson

# 针对Gson序列化相关的配置
spring.gson.date-format=yyyy-MM-dd HH-mm-ss

更多针对于Gson的配置可以查看文档。或者阅读配置类 GsonProperties 的源码。

Gson的所有配置项

大功告成

Spring boot检测到存在 Gson.class 并使用 GsonAutoConfiguration 来自动配置Gson实例。可以在任意组件中,通过 @Autowired 获取到 Gson实例对象

@Autowired
Gson gson;
2 Likes

仅仅处于困惑,我们为啥要放弃jackson呢?

因为我不熟悉jackson,我看到它一堆依赖就觉得脑壳痛。相反,Gson或者Fastjson,就只有一个jar。而且又好学。