Spring Boot 整合常用JSON方案 川长思鸟来 2021-11-05 13:18 279阅读 0赞 ### Spring Boot整合常用JSON方案 ### * 概要 * Spring Boot 整合 Jackson * * 依赖 * 在Config中引入 * 编写测试类 * 测试 * 整合GSON * * 修改依赖 * 修改Config * 测试 * 整合fastjson * * 修改Config * 测试 # 概要 # 本文主要介绍如何在Spring Boot中整合几种常用的JSON方案,主要介绍Spring Boot本身提供和Jackson和GSON,以及另一种比较常用的fastjson的整合。 # Spring Boot 整合 Jackson # Jackson是Spring Boot中默认的,所以我们不需要导入额外的依赖,只需要导入spring-boot-starter-web就可以使用了。 ## 依赖 ## <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.yjn</groupId> <artifactId>json</artifactId> <version>0.0.1-SNAPSHOT</version> <name>json</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ## 在Config中引入 ## package com.yjn.json.config; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import java.text.SimpleDateFormat; @Configuration public class WebMVCConfig{ @Bean MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){ MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); converter.setObjectMapper(objectMapper); return converter; } } ## 编写测试类 ## package com.yjn.json.controller; import com.yjn.json.user.User; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @RestController public class UserController { @GetMapping("/user") public User user(Model model){ User user = new User(); user.setId(1); user.setUsername("JustinNeil"); user.setAddress("www.yjn.com"); user.setBirthday(new Date()); return user; } } ## 测试 ## ![在这里插入图片描述][20190807091330814.png] # 整合GSON # GSON也是Spring Boot中提供了自动化配置的,我们需要出去Jackson的依赖并引入GSON ## 修改依赖 ## <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.yjn</groupId> <artifactId>json</artifactId> <version>0.0.1-SNAPSHOT</version> <name>json</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ## 修改Config ## package com.yjn.json.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.GsonHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import java.text.SimpleDateFormat; @Configuration public class WebMVCConfig{ @Bean GsonHttpMessageConverter gsonHttpMessageConverter(){ GsonHttpMessageConverter converter = new GsonHttpMessageConverter(); converter.setGson(new GsonBuilder().setDateFormat("yyyy/MM/dd HH:mm:ss").create()); return converter; } @Bean Gson gson(){ return new GsonBuilder().setDateFormat("HH:mm:ss").create(); } } ## 测试 ## 测试用类不需要改动 ![在这里插入图片描述][20190807092248172.png] # 整合fastjson # Spring Boot 中并没有提供fastjson的默认支持,所以我们需要自行导入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency> ## 修改Config ## package com.yjn.json.config; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.GsonHttpMessageConverter; @Configuration public class WebMVCConfig{ @Bean FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){ FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setDateFormat("yyyy-MM-dd HH:mm:ss"); converter.setFastJsonConfig(config); return converter; } } ## 测试 ## ![在这里插入图片描述][20190807092737665.png] [20190807091330814.png]: /images/20211105/2b095d32e3224ec4ab212e5b74a005d0.png [20190807092248172.png]: /images/20211105/b5ccea12e60840ceb7693261b206bb30.png [20190807092737665.png]: /images/20211105/62e0a74bdd5a4f5695ab8c71a7f3ec18.png
还没有评论,来说两句吧...