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.pswp.cn/news/454051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454051.shtml
英文地址,請注明出處:http://en.pswp.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;或者不能實現預期的功能。此時如…