Languages
[Edit]
EN

Spring Boot 2 - configure Fastjson as default JSON library (Jackson replacement)

9 points
Created by:
Tyreese-Aguirre
379

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 FastJsonHttpMessageConverter configuration.

 

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

  1. Alibaba Fastjson - GitHub Repository
  2. com.alibaba.fastjson2/fastjson2/2.0.51 - Maven Repository
  3. com.alibaba.fastjson2/fastjson2-extension-spring6/2.0.51 - Maven Repository

Alternative titles

  1. Spring Boot 3 - configure Fastjson as default JSON library (as default Jackson replacement)
  2. Spring Boot 2 - use Fastjson as default JSON library (as default Jackson replacement)
  3. Spring Boot 3 - use Fastjson as default JSON library (as default Jackson replacement)
  4. Spring Boot 2 - configure Alibaba Fastjson as default JSON library (Jackson replacement)
Donate to Dirask
Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!
Join to our subscribers to be up to date with content, news and offers.
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join