EN
Spring Boot 2 - configure Fastjson as default JSON library (Jackson replacement)
9
points
In this short article, we would like to show how to use Alibaba Fastjson library in Spring Boot 2 (or 3 also).
By default Spring Boot 2/3 uses Jackson library to convert Java objects to JSONs and back, so there are needed to do some changes in configurations.
Practical example
It is necessary to:
- exclude default Jackson library,
- include Fastjson library,
- include Fastjson Spring extension library,
- add
FastJsonHttpMessageConverterconfiguration.
In pom.xml file do the following changes:
<!-- ... -->
<dependencies>
<!-- ... -->
<dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion> <!-- ADD IT -->
<groupId>com.fasterxml.jackson.core</groupId> <!-- ADD IT -->
<artifactId>jackson-core</artifactId> <!-- ADD IT -->
</exclusion> <!-- ADD IT -->
<exclusion> <!-- ADD IT -->
<groupId>com.fasterxml.jackson.core</groupId> <!-- ADD IT -->
<artifactId>jackson-databind</artifactId> <!-- ADD IT -->
</exclusion> <!-- ADD IT -->
<exclusion> <!-- ADD IT -->
<groupId>com.fasterxml.jackson.core</groupId> <!-- ADD IT -->
<artifactId>jackson-annotations</artifactId> <!-- ADD IT -->
</exclusion> <!-- ADD IT -->
</exclusions>
</dependency>
<!-- ... -->
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
<dependency> <!-- ADD IT -->
<groupId>com.alibaba.fastjson2</groupId> <!-- ADD IT -->
<artifactId>fastjson2</artifactId> <!-- ADD IT -->
<version>2.0.51</version> <!-- ADD IT -->
</dependency> <!-- ADD IT -->
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2-extension-spring6 -->
<dependency> <!-- ADD IT -->
<groupId>com.alibaba.fastjson2</groupId> <!-- ADD IT -->
<artifactId>fastjson2-extension-spring6</artifactId> <!-- ADD IT -->
<version>2.0.51</version> <!-- ADD IT -->
</dependency> <!-- ADD IT -->
<!-- ... -->
<dependencies>
<!-- ... -->
Add JsonMapperConfig.java file to application configurations:
package com.example.config;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.alibaba.fastjson2.support.config.FastJsonConfig;
import com.alibaba.fastjson2.support.spring6.http.converter.FastJsonHttpMessageConverter;
@Configuration
public class JsonMapperConfig implements WebMvcConfigurer {
@Bean
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
var config = new FastJsonConfig();
config.setCharset(StandardCharsets.UTF_8);
var converter = new FastJsonHttpMessageConverter();
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON));
converter.setFastJsonConfig(config);
return converter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(this.fastJsonHttpMessageConverter());
}
}
Custom usage
Manually in our source code we are able to convert:
1. Objects to JSONs by:
// import com.alibaba.fastjson2.JSON;
SomeClass object = ...
String json = JSON.toJSONString(object);
2. JSONs to Objects by:
// import com.alibaba.fastjson2.JSON;
String json = ...;
SomeClass object = JSON.parseObject(json, SomeClass.class);
References
Alternative titles
- Spring Boot 3 - configure Fastjson as default JSON library (as default Jackson replacement)
- Spring Boot 2 - use Fastjson as default JSON library (as default Jackson replacement)
- Spring Boot 3 - use Fastjson as default JSON library (as default Jackson replacement)
- Spring Boot 2 - configure Alibaba Fastjson as default JSON library (Jackson replacement)