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
: