springmvc如何进行json格式转换及 json化日期格式
参考:https://zhuanlan.zhihu.com/p/60170376
fastjson:https://blog.csdn.net/weixin_43287478/article/details/103889295
HttpMessageConverter解读:https://segmentfault.com/a/1190000012658289
1.概述
HttpMessageConverter<T>
是Spring中的一个接口,负责将请求参数 转换成java类型参数(类型为T);或者将java类型数据 写入到http响应体中。
HttpMessageConverter接口的工作原理:
【注意】:有很重要的一点需要说明一下,springmvc可以同时配置多个Converter,根据一定的规则(主要是Content-Type
、Accept、controller方法的consumes/produces、Converter.mediaType以及Converter的排列顺序这四个属性)来选择到底是使用哪一个。
若要转换json格式数据,那么就需要使用json的消息转换器来进行 转换处理。
如果要进行json格式数据的转换
那么必须在容器中注入能够处理json数据的消息转换器,举个栗子:可以注入MappingJackson2HttpMessageConverter
这个类型的bean到IOC容器中,告诉springmvc我们需要进行Json格式的转换,MappingJackson2HttpMessageConverter
是HttpMessageConverter
接口 的一种实现。springboot中 默认的使用的json消息转换器实现 就是它。
如何在容器中注入MappingJackson2HttpMessageConverter
这个bean?
在springmvc
应用中,我们只需要 在pom中加入如下3个jackjson相关的依赖,则MappingJackson2HttpMessageConverter
对象 就会自动的注入到IOC容器中,作为HttpMessageConverter
的一种实现。
若是SpringBoot
应用,则web-stater
依赖中默认就引入了jackson
相关的依赖,使用jackson作为 json格式数据的消息转化器实现 。
jackson处理器中 提供了对 日期格式的默认处理方法,但是不满足我们的要求,我们需要设置 新的日期处理方法。
一般情况下日期的Java类型 和 数据库类型为
Java类型为:private Date createTime = new Date();
数据库类型为:
jackson默认对日期格式的处理结果:
重新设置了json日期格式后的结果:
2.解决json格式的日期输出的两种办法:
2.1 第一种:在日期字段上使用注解@JsonFormat
缺点:硬编码,这个是局部处理。
优点:灵活,想给哪个时间字段 格式化就给哪个时间字段格式化。
/** java8以前使用的 日期类型*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="Europe/Zagreb")
private Date lastUpdate;/** java8 日期类型*/
@JsonFormat(pattern="yyyy-MM-dd", timezone="Europe/Zagreb")
private LocalDate birthday;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="Europe/Zagreb")
private LocalDateTime lastUpdate;
2.2 第二种:在application.yml
中进行 全局配置
spring:jackson:date-format: yyyy-MM-dd HH:mm:ss # joda-date-time-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8
优点:如果我们要为应用程序中的 所有日期 都配置默认格式,那么这种配置的方式是最推荐的。
缺点:这种方法存在缺陷。它不适用于Java 8日期类型如 LocalDate
和 LocalDateTime
。我们只能使用它来格式化java.util.Date
或 java.util.Calendar
类型的字段 。
【兼容Java8日期格式的全局处理办法:】
兼容Java8
及Date
类型的日期格式,那么我们需要创建一个Jackson2ObjectMapperBuilderCustomizer
的bean对象:
@Configuration
public class ContactAppConfig{private static final String dateFormat ="yyyy-MM-dd";private static final String dateTimeFormat ="yyyy-MM-dd HH:mm:ss";@Beanpublic Jackson2ObjectMapperBuilderCustomizer jsonCustomizer(){return builder ->{ builder.simpleDateFormat(dateTimeFormat);//java8日期格式的json处理builder.serializers(newLocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));builder.serializers(newLocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));};}
}
上面的示例它适用于Java 8和遗留日期类型。我们必须定义一个bean并覆盖其默认Bean,来设置我们所需的格式。 虽然这种方法可能看起来有点麻烦,但它的优点在于它适用于Java 8和遗留日期类型。
3.若想使用fastjson作为消息转换器?
fastjson是阿里巴巴的一个开源json解析框架,是目前解析速度最快的开源框架。
使用:
1、添加依赖
首先需要除去 web-starter中 默认的jackson的依赖。
<!--除去 web-starter中 默认的jackson的依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></exclusion></exclusions>
</dependency><!-- 引入fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version>
</dependency>
2、自定义提供一个FastJsonHttpMessageConverter
@Configuration
public class MyFastJsonConfig {@BeanFastJsonHttpMessageConverter fastJsonHttpMessageConverter() {FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();FastJsonConfig config = new FastJsonConfig();//配置日期 序列化后的格式config.setDateFormat("yyyy-MM-dd HH:mm:ss");converter.setFastJsonConfig(config);return converter;}
}
参考:https://blog.csdn.net/weixin_43287478/article/details/103889295
springmvc如何进行json格式转换及 json化日期格式相关推荐
- php 时间戳格式转换,PHP时间戳和日期格式相互转换
PHP时间戳和日期相互转换操作总结 1.php中时间转换函数 strtotime(date("Y-m-d H:i"))date("Y-m-d H:i",$uni ...
- 日期格式转换oracle,oracle的日期格式转换
CREATE OR REPLACE FUNCTION F_IRT_DATE_YYYYMMDD(ENTER VARCHAR2) /**** *生效日期的格式为YYYYMMDD,输入日期格式为:16-JU ...
- 日期格式转换oracle,Oracle 关于日期格式转换与使用
在Oracle中我们经常会和日期打交道,在做报表的时候经常会用日报,周报,月报之类的条件进行分组: 我写了些例子来启发下大脑 select Sysdate from dual select to_ch ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...
json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...
- json字符串转换成json对象
Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 代码如下: $.parseJSON( ...
- Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...
- Json对象转换成Json数组
问题 在写单元测试是报错如下: JSON解析错误:不能将JavaUTIL.AARYLIST实例反序列化到StaskObjo对象令牌中 代码: 自己解决了挺长时间,也没研究出什么好的办法,最后问朴世超组 ...
- php用什么服务器系统时间格式,php中时间戳和日期格式的转换
一,PHP时间戳函数获取指定日期的unix时间戳 strtotime("2009-1-22″) 示例如下: echo strtotime("2009-1-22″) 结果:12325 ...
- mkv格式怎么解封?教你用格式转换的方法把mkv格式转换成avi
mkv格式作为主流格式之一,虽然没有以前那么流行了,但是在下载视频作为素材的时候难免还会遇到mkv格式.而mkv格式是一种封装格式,很多播放器或pr等一些编辑软件是不能直接添加mkv格式的,因此我们常 ...
- java aud 转mp3_音频格式转换:微信语音aud格式转成wav格式
近期遇到音频格式问题,下面就来记录一下,我暂时还没有找到直接从音频格式aud转换成wav的工具或者代码,所以我这里的转换是先把aud转换成mp3格式,然后再从mp3格式转换成aud格式.我是在linu ...
最新文章
- datagrid如何获取一行数据中的某个字段值_使用Mysql 数据库 新手常见问题
- 深度学习Deep Learning 相关库简介
- Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线
- 页面跳转多种方法(加传参)
- 信息学奥赛一本通 1129:统计数字字符个数 | OpenJudge NOI 1.7 01
- eclipse中查怎样看某个方法调用了谁
- 关于DevExpress的心得
- ubuntu安装完无法用xshell,远程链接
- show tables mysql_MySQL_解析MYSQL显示表信息的方法,在用mysql时(show tables),有时候 - phpStudy...
- 我们常说的CDN到底是什么?
- ubuntu wine 使用
- 远程桌面计算机正在使用,远程桌面使用问题
- JavaScript 学习手册二:JS 数据类型
- TDMA噪音产生机制及抑制
- php源码 拼车网顺风车_php版某拼车网源码分享 微信拼车打车约车源码 微信拼车+手机拼车+双终端+发布平台...
- 必须来GeekPwn的十大理由
- 管家婆服务器备份文件夹,请问管家婆数据备份在哪里?如何恢复?
- 用 VR 看 NBA,你甚至可以被勒布朗·詹姆斯隔扣
- 【论文相关】强化学习:提前看287篇ICLR-2021 深度强化学习领域论文得分汇总列表...
- 谷歌二次验证器手机里不能使用怎么办?
热门文章
- js 正则表达式去空格
- 最新个人自动发卡系统7.0网站源码开源
- CAN FD协议描述
- smartview for office的安装即配置
- 查看计算机屏幕颜色软件是什么,显示器颜色校正软件,详细教您显示器颜色校正软件...
- snipaste如何滚动截图_别再花时间去找截图软件了,只用考虑这三款!
- VS2010平台下VAssistX和Qt的整合配置及相关便捷操作
- Visual Studio助手VAssistx各版本破解教程
- axis wsdl2java_信步漫谈之Axis2—wsdl2java工具使用
- Vivado 2019.1下载与安装