参考: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格式的转换,MappingJackson2HttpMessageConverterHttpMessageConverter接口 的一种实现。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日期类型如 LocalDateLocalDateTime。我们只能使用它来格式化java.util.Datejava.util.Calendar类型的字段 。

【兼容Java8日期格式的全局处理办法:】

兼容Java8Date类型的日期格式,那么我们需要创建一个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化日期格式相关推荐

  1. php 时间戳格式转换,PHP时间戳和日期格式相互转换

    PHP时间戳和日期相互转换操作总结 1.php中时间转换函数 strtotime(date("Y-m-d H:i"))date("Y-m-d H:i",$uni ...

  2. 日期格式转换oracle,oracle的日期格式转换

    CREATE OR REPLACE FUNCTION F_IRT_DATE_YYYYMMDD(ENTER VARCHAR2) /**** *生效日期的格式为YYYYMMDD,输入日期格式为:16-JU ...

  3. 日期格式转换oracle,Oracle 关于日期格式转换与使用

    在Oracle中我们经常会和日期打交道,在做报表的时候经常会用日报,周报,月报之类的条件进行分组: 我写了些例子来启发下大脑 select Sysdate from dual select to_ch ...

  4. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...

    json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...

  5. json字符串转换成json对象

    Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 代码如下: $.parseJSON( ...

  6. Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象

    文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...

  7. Json对象转换成Json数组

    问题 在写单元测试是报错如下: JSON解析错误:不能将JavaUTIL.AARYLIST实例反序列化到StaskObjo对象令牌中 代码: 自己解决了挺长时间,也没研究出什么好的办法,最后问朴世超组 ...

  8. php用什么服务器系统时间格式,php中时间戳和日期格式的转换

    一,PHP时间戳函数获取指定日期的unix时间戳 strtotime("2009-1-22″) 示例如下: echo strtotime("2009-1-22″) 结果:12325 ...

  9. mkv格式怎么解封?教你用格式转换的方法把mkv格式转换成avi

    mkv格式作为主流格式之一,虽然没有以前那么流行了,但是在下载视频作为素材的时候难免还会遇到mkv格式.而mkv格式是一种封装格式,很多播放器或pr等一些编辑软件是不能直接添加mkv格式的,因此我们常 ...

  10. java aud 转mp3_音频格式转换:微信语音aud格式转成wav格式

    近期遇到音频格式问题,下面就来记录一下,我暂时还没有找到直接从音频格式aud转换成wav的工具或者代码,所以我这里的转换是先把aud转换成mp3格式,然后再从mp3格式转换成aud格式.我是在linu ...

最新文章

  1. datagrid如何获取一行数据中的某个字段值_使用Mysql 数据库 新手常见问题
  2. 深度学习Deep Learning 相关库简介
  3. Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线
  4. 页面跳转多种方法(加传参)
  5. 信息学奥赛一本通 1129:统计数字字符个数 | OpenJudge NOI 1.7 01
  6. eclipse中查怎样看某个方法调用了谁
  7. 关于DevExpress的心得
  8. ubuntu安装完无法用xshell,远程链接
  9. show tables mysql_MySQL_解析MYSQL显示表信息的方法,在用mysql时(show tables),有时候 - phpStudy...
  10. 我们常说的CDN到底是什么?
  11. ubuntu wine 使用
  12. 远程桌面计算机正在使用,远程桌面使用问题
  13. JavaScript 学习手册二:JS 数据类型
  14. TDMA噪音产生机制及抑制
  15. php源码 拼车网顺风车_php版某拼车网源码分享 微信拼车打车约车源码 微信拼车+手机拼车+双终端+发布平台...
  16. 必须来GeekPwn的十大理由
  17. 管家婆服务器备份文件夹,请问管家婆数据备份在哪里?如何恢复?
  18. 用 VR 看 NBA,你甚至可以被勒布朗·詹姆斯隔扣
  19. 【论文相关】强化学习:提前看287篇ICLR-2021 深度强化学习领域论文得分汇总列表...
  20. 谷歌二次验证器手机里不能使用怎么办?

热门文章

  1. js 正则表达式去空格
  2. 最新个人自动发卡系统7.0网站源码开源
  3. CAN FD协议描述
  4. smartview for office的安装即配置
  5. 查看计算机屏幕颜色软件是什么,显示器颜色校正软件,详细教您显示器颜色校正软件...
  6. snipaste如何滚动截图_别再花时间去找截图软件了,只用考虑这三款!
  7. VS2010平台下VAssistX和Qt的整合配置及相关便捷操作
  8. Visual Studio助手VAssistx各版本破解教程
  9. axis wsdl2java_信步漫谈之Axis2—wsdl2java工具使用
  10. Vivado 2019.1下载与安装