Spring MVC给我们提供了多种Json的实现,包含:Jackson、Gson、JSON-B。
Jackson使用的是MappingJackson2HttpMessageConverter
,Spring Boot提供的自动配置为:JacksonAutoConfiguration
Gson使用的是GsonHttpMessageConverter
,Spring Boot提供的自动配置为:GsonAutoConfiguration
JSON-B使用的是JsonbHttpMessageConverter
,Spring Boot提供的自动配置为:JsonbAutoConfiguration
Spring MVC默认使用的是Jackson,即使用MappingJackson2HttpMessageConverter
。
ObjectMapper
配置上一章中我们已经通过通过配置ObjectMapper
的Bean或者实现Jackson2ObjectMapperBuilderCustomizer
接口来配置的演示。
ObjectMapper
还可以通过前缀为spring.jackson.*
在外部配置中配置,如配置缩进可使用:
spring.jackson.serialization.indent_output: true
spring.jackson.date-format: dd/MM/yyyy
当Gson的jar包在类路径中时,一个Gson
的Bean会被配置,并自动注册GsonHttpMessageConverter
。可以通过GsonBuilderCustomizer
来定制Gson
的Bean。
implementation 'com.google.code.gson:gson'
我们可以通过前缀spring.gson.*
在外部配置中配置:
spring.gson.pretty-printing: true
spring.gson.date-format: dd/MM/yyyy
在外部配置设置优先使用Gson:
spring.http.converters.preferred-json-mapper: gson
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
我的新书《从企业级开发到云原生微服务:Spring Boot 实战》已出版,内容涵盖了丰富Spring Boot开发的相关知识
购买地址:https://item.jd.com/12760084.html
主要包含目录有:
第一章 初识Spring Boot(快速领略Spring Boot的美丽)
第二章 开发必备工具(对常用开发工具进行介绍:包含IntelliJ IDEA、Gradle、Lombok、Docker等)
第三章 函数式编程
第四章 Spring 5.x基础(以Spring 5.2.x为基础)
第五章 深入Spring Boot(以Spring Boot 2.2.x为基础)
第六章 Spring Web MVC
第七章 数据访问(包含Spring Data JPA、Spring Data Elasticsearch和数据缓存)
第八章 安全控制(包含Spring Security和OAuth2)
第九章 响应式编程(包含Project Reactor、Spring WebFlux、Reactive NoSQL、R2DBC、Reactive Spring Security)
第十章 事件驱动(包含JMS、RabbitMQ、Kafka、Websocket、RSocket)
第11章 系统集成和屁股里(包含Spring Integration和Spring Batch)
第12章 Spring Cloud与微服务
第13章 Kubernetes与微服务(包含Kubernetes、Helm、Jenkins、Istio)
多谢大家支持。