SpringMVC在使用Jackson2时关于日期类型格式化的问题

*本例程序使用Jackson2.9.0,jackson1.x的处理方式稍稍有些不同。

在基于Spring&SpringMVC的Web项目中,我们常使用Jackson(1.x/2.x)来增加程序对Json格式的数据的支持。

因此,在实际应用中有个常见的需求:日期的格式化。

假设,User对象有个Date类型的属性birthday:

class User implements Serializable {private Date birthday;//...
}

程序支持如下api请求,而我们希望在返回Json格式的User资料时,对Date类型的birthday进行一下格式化。

@Controller
class UserAction {@RequestMapping("/user/find/{id}")public @ResponseBody User getUserById(@PathVariable("id") int id) {return userService.getUserById(id);}
}

 

实现上述需求大体有两种常用的方式:

1.使用@JsonFormat注解

该方法只需在关键字段加上@JsonFormat注解即可,如下:

class User implements Serializable {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date birthday;//...
}

参数解释:pattern - 格式,timezone - 时区

 

2.设置MappingJackson2HttpMessageConverter的objectMapper

该方法主要对json数据转换时用到的HttpMessageConverter进行一些设置,进一步讲就是objectMapper在对日期类型数据序列化时设置成统一的pattern,配置如下:

<mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="objectMapper"><bean class="com.fasterxml.jackson.databind.ObjectMapper"><property name="dateFormat"><bean class="java.text.SimpleDateFormat"><constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /></bean></property></bean></property></bean></mvc:message-converters>
</mvc:annotation-driven>

或者:

<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"><property name="simpleDateFormat" value="yyyy-MM-dd HH:mm:ss" />
</bean><mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="objectMapper" ref="objectMapper" /></bean></mvc:message-converters>
</mvc:annotation-driven>

 

方法1使用起来方便灵活,但如果有大量需要统一设置的字段属性,那么推荐使用方法2。或者两种方法混合使用,作用优先级:方法1 > 方法2。

转载于:https://www.cnblogs.com/lichmama/p/7867273.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GDB 使用——Linux C编程

简述 一 列文件清单 二&#xff1a;执行程序 三&#xff1a;显示数据 四&#xff1a;断点(breakpoint) 五&#xff0e;断点的管理 六&#xff0e;变量的检查和赋值 七. 单步执行 八&#xff0e;函数的调用 九&#xff0e;机器语言工具 …

python拨号_python 拨号代码(win10 系统亲测有效)

# -*- coding: utf-8 -*-import win32rasimport time,osdef Connect(dialname, account, passwd):dial_params (dialname, , , account, passwd, )return win32ras.Dial(None, None, dial_params, None)def DialBroadband():dialname u宽带连接 #just a nameaccount u059291…

HP服务器引导盘下载地址

HP SmartStart CD 8.7 x32版本的下载地址为&#xff1a;http://ftp.hp.com/pub/softlib2/software1/cd/p1040463476/v63549/smartstart-8.70-0-x86.zip HP SmartStart CD 8.7 x32版本支持以下机型&#xff1a; HP ProLiant ML 和 DL 300、500 和 700 系列以及 HP ProLiant BL S…

MUI - 预加载

打开详情页回到顶部:document.body.scrollTop document.documentElement.scrollTop 0;方式一&#xff1a;preload一次仅能预加载一个页面&#xff08;除非循环&#xff09; var subWebview mui.preload({url: examples/accordion.html,id: template_sub,top: styles: {48 …

python 分类变量xgboost_【转】XGBoost参数调优完全指南(附Python代码)

xgboost入门非常经典的材料&#xff0c;虽然读起来比较吃力&#xff0c;但是会有很大的帮助&#xff1a;英文原文链接:https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

用 GDB 调试Linux程序及有用技巧

用 GDB 调试Linux程序及有用技巧(转) armlinux 2008-06-19 10:48 阅读91 评论0 字号&#xff1a; 大大 中中 小小 GNU的调试器称为gdb&#xff0c;该程序是一个交互式工具&#xff0c;工作在字符模式。在 X Window 系统中&#xff0c;有一个gdb的前端图形工具…

Bash : 索引数组

Bash 提供了两种类型的数组&#xff0c;分别是索引数组(indexed array)和关联数组(associative array)。本文主要介绍索引数组的基本用法。 索引数组的基本特点 Bash 提供的数组都是一维数组。任何变量都可以用作索引数组。通过 declare 关键字可以显式的声明一个索引数组。数组…

Flask 第三方组件之 login

在了解使用Flask来实现用户认证之前&#xff0c;我们首先要明白用户认证的原理。假设现在我们自己去实现用户认证&#xff0c;需要做哪些事情呢&#xff1f; 首先&#xff0c;登录。用户能够输入用户名和密码进行登录&#xff0c;所以需要网页和表单&#xff0c;实现用户输入和…

Zookeeper客户端Curator使用详解

http://www.jianshu.com/p/70151fc0ef5dZookeeper客户端Curator使用详解 简介 Curator是Netflix公司开源的一套zookeeper客户端框架&#xff0c;解决了很多Zookeeper客户端非常底层的细节开发工作&#xff0c;包括连接重连、反复注册Watcher和NodeExistsException异常等等。Pat…

python argparse nargs_Python | 使用argparse解析命令行参数

今天是Python专题第27篇文章&#xff0c;我们来聊聊Python当中的命令行参数工具argparse。命令行参数工具是我们非常常用的工具&#xff0c;比如当我们做实验希望调节参数的时候&#xff0c;如果参数都是通过硬编码写在代码当中的话&#xff0c;我们每次修改参数都需要修改对应…

Python 第三方模块之 smtplib

1 python对SMTP的支持 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;是简单传输协议&#xff0c;它是一组用于用于由源地址到目的地址的邮件传输规则。 python中对SMTP进行了简单的封装&#xff0c;可以发送纯文本邮件、HTML邮件以及带附件的邮件。两个核心模块…

Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例

server.js代码&#xff1a; // 内置http模块&#xff0c;提供了http服务器和客户端功能&#xff08;path模块也是内置模块&#xff0c;而mime是附加模块&#xff09; var httprequire("http");// 创建服务器,创建HTTP服务器要调用http.createServer()函数&#xff0c…

linux下gdb单步调试

用 GDB调试程序 GDB 概述 ———— GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具。或许&#xff0c;各位比较喜欢那种图形界面方式的&#xff0c;像 VC、 BCB等 IDE的调试&#xff0c;但如果你是在 UNIX平台下做软件&#xff0c;你会发现 GDB这个调试工具有比 V…

svg 动画_根据AI导出的SVG path制作SVG线条动画

点击右上方红色按钮关注“web秀”&#xff0c;让你真正秀起来前言首先祝大家2019新年快乐&#xff0c;万事大吉&#xff0c;猪事顺利&#xff0c;阖家欢乐。前面文章SVG 线条动画基础入门知识学习到了基础知识&#xff0c;现在来给大家讲讲如何制作SVG 制作复杂图形线条动画。假…

MySQL提示Truncated incorrect DOUBLE value解决方法

“Truncated incorrect DOUBLE value”的解决方法主要是这两种&#xff1a; 1、修改了多个列的值而各列之间用逗号连接而不要用and 错误写法示例&#xff1a;update tablename set col1value1 and col2value2 where col3value3&#xff1b;正确写法示例&#xff1a;update ta…

一个完美的导航树

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml" ><head><title>无标题页</title><…

自定义python框架_Python web 框架Sanic 学习: 自定义 Exception

Sanic 是一个和类Flask 的基于Python3.5的web框架&#xff0c;它使用了 Python3 异步特性&#xff0c;有远超 flask 的性能。编写 RESTful API 的时候&#xff0c;我们会定义特定的异常错误类型&#xff0c;比如我定义的错误返回值格式为&#xff1a;{"error_code": …

文字水印

using System.Threading.Tasks;using System.IO;using System.Drawing; public static int Shuy(string Sname,string fname) { try { Image image Image.FromFile(fname); Graphics gra Graphics.FromImage(image); String text Sname; Font font new Font("宋体&quo…

读书笔记2013第3本:《无价》

《无价》这本书是过年前买的&#xff0c;网络书店上写着“老罗推荐”&#xff0c;想着好像是在老罗哪一年的演讲里听过这本书&#xff0c;在豆瓣上评分7.9。读书是为了产生行动&#xff0c;读书时要提的4个问题&#xff0c;1&#xff09;这本书主要在谈些什么&#xff1f;2&…

Linux下的程序调试——GDB

无论是多么优秀的程序员&#xff0c;都难以保证自己在编写代码时不会出现任何错误&#xff0c;因此调试是软件开发过程中的一个必不可少的 组成部分。当程序完成编译之后&#xff0c;它很可能无法正常运行&#xff0c;或者会彻底崩溃&#xff0c;或者不能实现预期的功能。此时如…