赞
踩
SpringBoot支持三种Json库:Jackson、Gson、JSON-B,Jackson是SpringBoot官方推荐的默认库。SpringBoot分别提供了Jackson、Gson、JSON-B的自动装配:
- org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\
- org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\
- org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration,\
-
Jackson是spring-boot-starter-json引入的模块功能,当Jackson在类路径上时,会自动配置ObjectMapper bean。spring-boot-starter-json pom如下:
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter</artifactId>
- <version>2.1.4.RELEASE</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>5.1.6.RELEASE</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.8</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.datatype</groupId>
- <artifactId>jackson-datatype-jdk8</artifactId>
- <version>2.9.8</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.datatype</groupId>
- <artifactId>jackson-datatype-jsr310</artifactId>
- <version>2.9.8</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.module</groupId>
- <artifactId>jackson-module-parameter-names</artifactId>
- <version>2.9.8</version>
- <scope>compile</scope>
- </dependency>
- </dependencies>
如果Gson在classpath上,则会再自动装配Gson bean,并提供了几个spring.gson.*配置属性来自定义配置。为了获得更多控制,可以使用一个或多个GsonBuilderCustomizer bean,如果JSON-B API在classpath上,也会自动装配Jsonb bean。首选的JSON-B实现是Apache johnzon,它提供了依赖关系管理。
值得注意的是spring-boot-starter-web中包括了spring-boot-starter-json,因为spring mvc中处理请求时入参和返回结果需要借助json模块进行序列化和反序列化。spring mvc中json的解析离不开HttpMessageConvert接口,他是一个消息转换工具,主要有两方面的功能:
1. 将服务端返回的对象序列化成JSON字符串
2. 将前端传来的JSON字符串反序列化成Java对象
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。