1. 程式人生 > >spring mvc 返回json 時間格式處理

spring mvc 返回json 時間格式處理

從後臺返回json格式的資料,timestamp 與datetime 型別的資料,在前臺顯示為long型別的, 很是苦惱, 研究了很長時間,下面總結一下:

SpringMVC使用@ResponseBody時返回json的日期格式

     前提了解: @ResponseBody 返回json字串的核心類是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 這個開源的第三方類庫。詳見下一篇文章。

    出現問題: 使用@ResponseBody時返回json字串的日期格式。Date型別屬性預設返回一個Long型的時間戳,怎樣能夠返回自定義的日期格式?

    解決方案:目前有兩種方式實現,

方法一:全域性處理(這種方法我沒試驗過)

  1. <mvc:annotation-driven>
  2.     <!-- 處理responseBody 裡面日期型別 -->
  3.         <mvc:message-converters>
  4.             <beanclass="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  5.                 <propertyname=
    "objectMapper">
  6.                     <beanclass="com.fasterxml.jackson.databind.ObjectMapper">
  7.                         <propertyname="dateFormat">
  8.                             <beanclass="java.text.SimpleDateFormat">
  9.                                 <constructor-argtype="java.lang.String"
    value="yyyy-MM-dd HH:mm:ss"/>
  10.                             </bean>
  11.                         </property>
  12.                     </bean>
  13.                 </property>
  14.             </bean>
  15.         </mvc:message-converters>
  16.     </mvc:annotation-driven>

方法二:引入jackson-annotations-2.5.0.jar  jackson-core-2.5.0.jar  jackson-databind-2.5.0.jar 三個包

spring 的註解中自帶格式轉換

在實體類加上如下配置:

  1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss"timezone = "GMT+8")  
  2. public Date x_date; // 日期;  

務必加上:timezone="GMT+8"  , 東八區, 否則 會出現時間少一天的情況。

OK 已經解決, 返回的json 資料格式中,已經有了, 時間格式的字串。