Spring Boot 内置 JSON 支持

Spring Boot 默认提供了三个 JSON 库的集成,分别为 GSON、Jackson 和 、JSON-B。

Spring Boot 默认提供了与三个 JSON 库的集成:

  • GSON

  • Jackson

  • JSON-B

注意:Jackson 是 Spring Boot 首选的默认库。

Jackson

提供了 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>

如下图:

Spring Boot 内置 JSON 支持

实例

(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 在类路径上时,会自动配置 Gson bean。提供了几个 spring.gson.* 配置属性来自定义配置。为了获得更多控制,可以使用一个或多个 GsonBuilderCustomizer beans。

JSON-B

提供了 JSON-B 的自动配置。当 JSON-B API 和实现在类路径上时,将自动配置 Jsonb bean。首选的 JSON-B 实现是 Apache Johnzon,它提供了依赖关系管理。

成熟不是人的心变老,而是泪在眼眶里打转还能微笑。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号