Spring Boot 默认提供了与三个 JSON 库的集成:
GSON
Jackson
JSON-B
注意:Jackson 是 Spring Boot 首选的默认库。
提供了 Jackson 的自动配置,Jackson 是 spring-boot-starter-json 的一部分。当 Jackson 在类路径上时,会自动配置 ObjectMapper bean。提供了几个配置属性来自定义 ObjectMapper 的配置。
SpringBoot 项目中当我们添加了 spring-boot-starter-web 依赖,就默认提供了 Jackson用来解析Json。依赖如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
如下图:

(1)定义实体 User,代码如下:
import lombok.Builder;
import lombok.Data;
import java.util.Date;
@Data
@Builder
public class User {
private int id;
private String name;
private Integer age;
private Date birthday;
}(2)定义 controller,代码如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController
@RequestMapping("/demo1")
public class DemoController {
@RequestMapping("/demo")
public User demo() {
return User.builder().id(100)
.name("张三")
.age(29)
.birthday(new Date())
.build();
}
}访问“/demo1/demo”接口将输出如下 JSON 字符串:
{"id":100,"name":"张三","age":29,"birthday":"2021-04-22T14:57:24.124+00:00"}我们可以对 Date 类型字段进行自定义格式,在属性上添加 @JsonFormat 注解可以实现:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date birthday;
接口输出JSON字符串:
{"id":100,"name":"张三","age":29,"birthday":"2021-04-22 15:04:36"}提供了 Gson 的自动配置。当 Gson 在类路径上时,会自动配置 Gson bean。提供了几个 spring.gson.* 配置属性来自定义配置。为了获得更多控制,可以使用一个或多个 GsonBuilderCustomizer beans。
提供了 JSON-B 的自动配置。当 JSON-B API 和实现在类路径上时,将自动配置 Jsonb bean。首选的 JSON-B 实现是 Apache Johnzon,它提供了依赖关系管理。