JSON
Spring Boot 提供了与三个 JSON 映射库的集成:
-
Gson
-
Jackson
-
JSON-B
Jackson 是首选和默认库。
Jackson
提供了 Jackson 的自动配置,而 Jackson 是 spring-boot-starter-json 的一部分。当 Jackson 在类路径上时,将自动配置一个 ObjectMapper Bean。为 customizing the configuration of the ObjectMapper 提供了多个配置属性。
Custom Serializers and Deserializers
如果你使用 Jackson 对 JSON 数据进行序列化和反序列化,你可能需要编写自己的 JsonSerializer 类和 JsonDeserializer 类。自定义序列化器通常是 registered with Jackson through a module,但 Spring Boot 提供了一个替代的 @JsonComponent 批注,可以更容易地直接注册 Spring Bean。
你可以对 JsonSerializer、JsonDeserializer 或 KeyDeserializer 实现直接使用 @JsonComponent 批注。你还可以将其用于包含序列化器/反序列化器的类,这在以下示例中有所体现:
ApplicationContext 中的所有 @JsonComponent Bean 会自动向 Jackson 注册。由于 @JsonComponent 的元批注是 @Component,所以会应用通常的组件扫描规则。
Spring Boot 还会提供 {code-spring-boot-src}/jackson/JsonObjectSerializer.java[JsonObjectSerializer] 和 {code-spring-boot-src}/jackson/JsonObjectDeserializer.java[JsonObjectDeserializer] 基本类,在序列化对象时,这些类提供对标准 Jackson 版本的有用替代品。有关详细信息,请参阅 Javadoc 中的 JsonObjectSerializer 和 JsonObjectDeserializer。
上面的示例可以重新编写,这样使用 JsonObjectSerializer/JsonObjectDeserializer: