Spring Boot 2.x实战46 - Spring Web MVC 18 - Web MVC配置(JSON配置)

3.10 JSON

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

3.10.1 Jackson的ObjectMapper配置

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

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

spring.jackson.serialization.indent_output: true
spring.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: true
spring.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

新书推荐:

我的新书《从企业级开发到云原生微服务: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)
多谢大家支持。

你可能感兴趣的:(Spring,Boot2.x实战全集,Spring,Boot2.x实战,-,Spring,MVC,spring,boot,mvc,config,json,gson,json-b)