SpringBoot使用自定义json解析器的方法实例
- 更新时间:2020-04-29 20:14:51
- 编辑:陈启颜
参考资料
- Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统 PDF 电子书 / 132979 MB / 徐丽健 推荐度:
- 《基于SpringBoot实现:Java分布式中间件开发入门与实战》源码文件 配套资源 / 206 MB / 钟林森 推荐度:
- Spring Boot趣味实战课 PDF 电子书 / 87.8 MB / 刘水镜 推荐度:
- SpringBoot整合oracle的ojdbc8-12.2.0.1的jar包 / 3.6 MB / 码小辫 推荐度:
- SpringBoot揭秘:快速构建微服务体系 PDF 电子书 / 29.5 MB / 王福强 推荐度:
正文内容
SpringBoot使用自定义json解析器的使用方法
Spring-Boot是基于Spring框架的,它并不是对Spring框架的功能增强,而是对Spring的一种快速构建的方式。
Spring-boot应用程序提供了默认的json转换器,为Jackson。示例:
pom.xml中dependency配置:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.qinker</groupId> <artifactId>spring-boot</artifactId> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <version>0.0.1-SNAPSHOT</version> <name>spring-boot</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>9</java.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <finalName>spring-boot</finalName> </build> </project>
创建三个类:MainApp.java和User.java以及HelloController.java:
package com.springboot; import java.util.Date; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "hello,SpringBoot"; } /** * Spring boot 默认json解析框架是Jackson * @return */ @RequestMapping("/getUser") public User getUser() { User u = new User(); u.setName("张三"); u.setAge(33); u.setCreateTime(new Date()); return u; } }
package com.springboot; import java.io.Serializable; import java.util.Date; public class User implements Serializable{ private String name; private int age; private Date createTime; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } }
package com.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MainApp{ public static void main(String[] args) { SpringApplication.run(MainApp.class, args); } }
启动MainApp:访问http://localhost:8080/getUser,结果如下:
{"name":"张三","age":33,"createTime":"2018-04-04T03:03:08.534+0000"}
可见:我们并未做任何配置,返回的却是json数据,可见Spring-Boot对json做了默认实现,使用的是内置Jackson转换器。
那么,下面看看如何使用自定义的json转换器,这里以fastjson为例:
首先,引入fastjson包,在pom中添加如下依赖:
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
为了方便看出效果:修改User类:
package com.springboot; import java.io.Serializable; import java.util.Date; import com.alibaba.fastjson.annotation.JSONField; @SuppressWarnings("serial") public class User implements Serializable{ private String name; private int age; @JSONField(format="yyyy-MM-dd HH:mm") private Date createTime; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } }
1.实现fastjson自定义json转换的第一种方式,Spring-Boot实现WebMvcConventer接口:
修改MainApp如下:
package com.springboot; import java.util.ArrayList; import java.util.List; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; @SpringBootApplication public class MainApp implements WebMvcConfigurer{ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { WebMvcConfigurer.super.configureMessageConverters(converters); //创建fastjson转换器实例 FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); //配置对象 FastJsonConfig config = new FastJsonConfig(); List<MediaType> mediaTypes = new ArrayList<>(); //中文编码 MediaType mediaType = MediaType.APPLICATION_JSON_UTF8; mediaTypes.add(mediaType); config.setSerializerFeatures(SerializerFeature.PrettyFormat); converter.setSupportedMediaTypes(mediaTypes); converter.setFastJsonConfig(config); converters.add(converter); } public static void main(String[] args) { SpringApplication.run(MainApp.class, args); } }
启动程序:访问上面的路径:浏览器会看到如下结果:
{ "age":33, "createTime":"2018-04-04 11:14", "name":"张三" }
2.使用@Bean注解注入fastjson转换器:修改MainApp如下:
package com.springboot; import java.util.ArrayList; import java.util.List; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.http.MediaType; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; @SpringBootApplication public class MainApp{ @Bean public HttpMessageConverters fastJsonHttpMessageConventers() { FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures(SerializerFeature.PrettyFormat); List<MediaType> mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.APPLICATION_JSON_UTF8); converter.setSupportedMediaTypes(mediaTypes); return new HttpMessageConverters(converter); } public static void main(String[] args) { SpringApplication.run(MainApp.class, args); } }
访问结果是一样的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。
SpringBoot相关教程
-
Springboot跨域访问不使用jsonp的简单方法
这篇文章主要介绍了Springboot 实现跨域访问 无需使用jsonp的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2020-01-01
-
SpringBoot揭秘:快速构建微服务体系
《SpringBoot揭秘:快速构建微服务体系》 以微服务的基本概念介绍性开篇, 逐步引出Java平台下打造微服务的利器SpringBoot微框架,从SpringBoot微框架的出身和源头,循序渐进,一步步为大家剖析
大小:29.5 MBSpringBoot电子书
-
一步一步学Spring Boot 2
本书主要内容包括Spring Boot环境搭建、Spring Boot常用标签、Spring Boot集成Redis、数据库MySQL、Spring Data、日志Log4J、Thymeleaf模板引擎、ActiveMQ消息、MyBatis等流行技术,以及利用Spring Boot实现邮件发送、Quartz定时器、过滤器Filter和监听器Listener等。
大小:72.04 MBSpring Boot电子书
-
Spring Boot 企业级应用开发实战
《Spring Boot 企业级应用开发实战》 围绕如何整合以 Spring Boot 为核心的技术栈,来实现一个完整的企业级博客系统 NewStarBlog 而展开。该博客系统支持市面上博客系统的常见功能。读者朋友可以
大小:419 MBSpring Boot电子书
-
Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统
本书从项目实践出发,手把手、心贴心地带领读者从零开始,一步一步地开发出功能相对完整的权限管理系统,从而深入掌握当前主流的Spring Boot + Spring Cloud + Vue前后端集成开发技术。 全书分为三篇共32章。第一篇为系统介绍篇,对系统的功能、架构和界面进行介绍,对系统的安装运行给出指南,对涉及的关键技术进行简单介绍。第二篇为后端实现篇,从数据库设计和搭建开发环境开始,全面细致地讲解权限管理系统的后端实现全过程。第三篇为前端实现
大小:132979 MB 项目实战
-
Spring Boot 2精髓:从构建小系统到架构分布式大系统
这本书系统介绍了Spring Boot 2的主要技术,涵盖Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性,介绍如何平滑地用Spring Boot实现分布式架构等
大小:174.8 MBSpringBoot电子书
-
微服务实战(Dubbox+Spring Boot+Docker)
在这个凡事皆互联的时代,越来越多的人和物成为互联网上的节点,不断扩充着互联网这张大网的边界。节点即价值,更多的节点意味着更大的价值。
大小:90.8 MB微服务电子书
-
Spring Boot+Vue全栈开发实战
传统的JavaEE开发效率低下、配置臃肿、调试不便,严重制约了程序员的生产力。Spring Boot致力于简化开发配置,并为企业级开发提供一系列非业务性功能;而Vue则采用数据驱动视图的方式将程序
大小:196.3 MBSpring电子书
-
Spring Boot 2企业应用实战
本书全面介绍了全新的Spring Boot 2和常用第三方框架整合开发相关的各方面知识。书中操作步骤细致,编程思路清晰,语言平实易懂。读者参考本书的架构,可以身临其境地感受企业实际项目开发。
大小:92.99 MBSpring Boot电子书
-
微服务架构实战:基于Spring Boot、Spring Cloud、Docker
1.根据SpringBoot、SpringCloud、Docker等技术性搭建微保障体系。 2.精减而详细的经典案例展现保持分布式架构的详细宏伟蓝图。 3.融合业务流程情景,根据全方位实例得出专用工具在搭建分布式架构
大小:179.6 MB微服务电子书
-
深入浅出Spring Boot 2.x
spring boot 2实战精髓 企业级应用开发实战 微服务实战指南 结合主流持久层框架MyBatis 讲述企业级Spring Boot开发要点 赠送作者讲解的部分配套视频课程
大小:257.67 MBSpring Boot电子书