龙空技术网

47-Spring MVC的JSON配置

爱科学的卫斯理 231

前言:

眼前大家对“apachejason配置”大致比较注重,朋友们都需要知道一些“apachejason配置”的相关资讯。那么小编在网络上搜集了一些对于“apachejason配置””的相关文章,希望小伙伴们能喜欢,我们快快来了解一下吧!

上篇我们学习了《46-Spring MVC的路径匹配和内容协商》,本篇我们学习Spring MVC的Josn配置。

3.10 JSON

Spring MVC给我们提供了多种Json的实现,包含:Jackson、Gson、JSON-B。

Jackson使用的是MappingJackson2HttpMessageConverter,Spring Boot提供的自动配置为:JacksonAutoConfigurationGson使用的是GsonHttpMessageConverter,Spring Boot提供的自动配置为:GsonAutoConfigurationJSON-B使用的是JsonbHttpMessageConverter,Spring Boot提供的自动配置为:JsonbAutoConfiguration

Spring MVC默认使用的是Jackson,即使用MappingJackson2HttpMessageConverter

3.10.1 Jackson的ObjectMapper配置

上一章中我们已经通过通过配置ObjectMapper的Bean或者实现Jackson2ObjectMapperBuilderCustomizer接口来配置的演示。

ObjectMapper还可以通过前缀为spring.jackson.*在外部配置中配置,如配置缩进可使用:

spring.jackson.serialization.indent_output: truespring.jackson.date-format: dd/MM/yyyy
3.10.2 切换Json实现3.10.2.1 切换为Gson

当Gson的jar包在类路径中时,一个Gson的Bean会被配置,并自动注册GsonHttpMessageConverter。可以通过GsonBuilderCustomizer来定制Gson的Bean。

implementation 'com.google.code.gson:gson'

我们可以通过前缀spring.gson.*在外部配置中配置:

spring.gson.pretty-printing: truespring.gson.date-format: dd/MM/yyyy

在外部配置设置优先使用Gson:

spring.http.converters.preferred-json-mapper: gson
3.10.2.2 切换为JSON-B

JSON-B是JSR-367,提供JSON-B API规范,Spring Boot偏向于使用Apache Johnzon作为实现。当jar包在类路径时,一个Jsonb的Bean会被配置,并自动注册JsonbHttpMessageConverter

implementation 'javax.json.bind:javax.json.bind-api'implementation 'org.apache.geronimo.specs:geronimo-json_1.1_spec:1.2'implementation 'org.apache.johnzon:johnzon-jsonb'

JSON-B下也可以:

使用@JsonbProperty来配置Json的key;使用@JsonbDateFormat来定制时间格式;使用@JsonbNumberFormat定制数字格式;使用@JsonbTransient来忽略字段。

在外部配置设置优先使用JSON-B:

spring.http.converters.preferred-json-mapper: jsonb

标签: #apachejason配置