4.1. 返回json数据
2022/7/4 6:20:09
本文主要是介绍4.1. 返回json数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring MVC 中使用消息转换器HttpMessageConverter 对JSON 的转换提供了很好的支持。
在Spring Boot 中只要有Web 依赖,这个依赖中默认加入了jackson-databind 作为JSON 处理器,此时不需要添加额外的JSON 处理器就能返回一段JSON 了。
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency>
创建一个Book 实体类:
public class Book { private String name ; private String author; @Jsonignore -> 无视这个property,不转换成json返回 private Float price; @JsonFormat(pattern=”yyyy-MM-dd”) -> 时间的打印格式 private Date publicationDate; //省略 getter/setter }
然后创建BookController , 返回Book 对象即可:
@RestController public class BookController { @GetMapping ("/book") public Book book() { Book book= new Book(); book.setAuthor("罗贯中"); book.setName("三国演义"); book.setPrice(30f); book.setPublicationDate(new Date()); return book; } }
前端接受到的就是json格式的内容了: {"name": "三国演义", "author": "罗贯中", "publicationDate:"2018-07-08"}
对于字段忽略、日期格式化等常见需求都可以通过注解来解决。这是通过Spring 中默认提供的MappingJackson2HttpMessageConverter 来实现的,当然开发者也可以根据实际需求自定义JSON 转换器。
4.1.2. 自定义转换器
常见的JSON 处理器除了jackson-databind 之外, 还有Gson 和fastjson。
1 使用Gson
使用Gson ,需要先除去默认的jackson-databind,然后加入Gson 依赖
<dependency> <groupid>org.springfrarnework.boot</groupId> <artifactid>spring-boot-starter-web</artifactid> <exclusions> // 除去默认的jackson-databind <exclusion> <groupid>com.fasterxrnl.jackson.core</groupid> <artifactid>jackson-databind</artifactid> </exclusion> </exclusions> </dependency> // 加入Gson 依赖 <dependency> <groupid>com.google.code.gson</groupId> <artifactid>gson</artifactid> </dependency>
由于Spring Boot中默认提供了Gson 的自动转换类GsonHttpMessageConvertersConfiguration, 因此Gson 的依赖添加成功后, 可以像使用jackson-databind 那样直接使用Gson 。
但是在Gson 进行转换时, 如果想对日期数据进行格式化,那么还需要开发者自定义HttpMessageConverter。
@Configuration public class GsonConfig { @Bean GsonHttpMessageConverter gsonHttpMessageConverter() { GsonHttpMessageConverter converter = new GsonHttpMessageConverter(); GsonBuilder builder = new GsonBuilder(); // 设直Gson 解析时日期的格式 builder.setDateFormat(”yyyy-MM-dd”); // 设直Gson 解析时修饰符为protected 的字段被过滤掉。就和jsonignored同效果 // protected Float price; 那么在json中就不会显示price了 builder.excludeFieldsWithModifiers(Modifier.PROTECTED); Gson gson = builder.create(); converter.setGson(gson); return converter; } }
2. 使用fastjson
fastjson 是阿里巴巴的一个开源JSON 解析框架, 是目前JSON 解析速度最快的开源框架,该框架也可以集成到Spring Boot 中。不同于Gson, fastjson 继承完成之后并不能立马使用, 需要开发者提供相应的HttpMessageConverter 后才能使用。配设过程比较复杂,需要用时请看书或上网搜索。
//
这篇关于4.1. 返回json数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18tcpdf可以等待vue动态页面加载完成后再生成pdf吗?-icode9专业技术文章分享
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南