Spring Boot 3.x 提供了对多种 JSON 处理库的良好支持,包括 Gson、Jackson、Json-B 和 Fastjson。以下是关于如何在 Spring Boot 3.x 中使用这些库进行 JSON 序列化和反序列化的详细介绍。
1. 使用 Jackson
Jackson 是 Spring Boot 的默认 JSON 处理库,Spring Boot 自动配置 Jackson 以用于 HTTP 消息转换器。
依赖配置:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
使用示例:
Jackson 会自动用于 REST 控制器中:
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/user")
public User getUser() {
return new User("John", "Doe");
}
@PostMapping("/user")
public User createUser(@RequestBody User user) {
return user;
}
}
配置自定义 ObjectMapper:
如果需要自定义 Jackson 的配置,可以在 application.properties
中进行配置,或者在配置类中定义:
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
// 自定义配置,例如:
// mapper.enable(SerializationFeature.INDENT_OUTPUT);
return mapper;
}
}
2. 使用 Gson
Gson 是 Google 提供的 JSON 处理库,如果希望使用 Gson 替代 Jackson,需要在项目中引入 Gson 的依赖并进行配置。
依赖配置:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
配置 Gson:
在配置类中定义 GsonHttpMessageConvertersConfiguration
:
import com.google.gson.Gson;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
@Configuration
public class GsonConfig {
@Bean
public HttpMessageConverter<Object> gsonHttpMessageConverter() {
Gson gson = new Gson();
GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
gsonHttpMessageConverter.setGson(gson);
return gsonHttpMessageConverter;
}
}
3. 使用 Json-B
Json-B 是 Java EE 的标准 JSON 绑定 API,可以在 Spring Boot 中进行配置以替代 Jackson。
依赖配置:
<dependency>
<groupId>javax.json.bind</groupId>
<artifactId>javax.json.bind-api</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
</dependency>
配置 Json-B:
在配置类中定义 JsonbHttpMessageConverter
:
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.JsonbHttpMessageConverter;
@Configuration
public class JsonbConfig {
@Bean
public HttpMessageConverter<Object> jsonbHttpMessageConverter() {
Jsonb jsonb = JsonbBuilder.create();
return new JsonbHttpMessageConverter(jsonb);
}
}
4. 使用 Fastjson
Fastjson 是阿里巴巴提供的高性能 JSON 处理库,使用时需要引入 Fastjson 的依赖并进行配置。
依赖配置:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
配置 Fastjson:
在配置类中定义 FastJsonHttpMessageConverter
:
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
@Configuration
public class FastJsonConfig {
@Bean
public HttpMessageConverter<Object> fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
// 自定义配置,例如:
// fastConverter.setFeatures(SerializerFeature.PrettyFormat);
return fastConverter;
}
}
5. 总结
Spring Boot 3.x 提供了对多种 JSON 库的支持,通过简单配置即可使用不同的 JSON 处理库。根据项目需求选择合适的库,并在配置类中定义相应的 HTTP 消息转换器即可实现 JSON 序列化和反序列化。以下是各库的优缺点:
- Jackson:Spring Boot 默认库,功能强大,性能好。
- Gson:轻量级,简单易用。
- Json-B:标准化 API,适合 Java EE 环境。
- Fastjson:高性能,适合对性能要求高的场景。
选择合适的 JSON 处理库可以提升开发效率和应用性能。