springmvc fastjson 反序列化時間格式化
阿新 • • 發佈:2018-12-29
第一種情況是從後臺拿到資料,進行反序列化,反序列化格式時間:試了一下很多網上的方法,最後發現還是在實體類上面的日期欄位加上如下註解,可以完成格式化操作,否則預設就都是時間戳的格式:
@JSONField (format="yyyy-MM-dd HH:mm:ss")
public Date birthday;
@JSONField (format="yyyy-MM-dd HH:mm:ss")
public Date birthday;
第二種情況是:response返回給前段的時間格式,一開始是時間戳,需要轉成想要的格式yyyy-MM-dd重寫方法:
- package com.jjs.util;
- import java.io.IOException;
- import org.springframework.http.HttpOutputMessage;
- import org.springframework.http.converter.HttpMessageNotWritableException;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.serializer.SerializerFeature;
-
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
- publicclass JsonHttpMessageConverter extends FastJsonHttpMessageConverter {
- @Override
- protectedvoid writeInternal(Object obj, HttpOutputMessage outputMessage)
- throws IOException, HttpMessageNotWritableException {
- // TODO Auto-generated method stub
-
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH"
- JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
- super.writeInternal(obj, outputMessage);
- }
- }
然後,將springMVC.xml(具體檔名以專案而定) 的配置修改為如下, 引用重寫了writeInternal()方法的類進行json序列化
- <mvc:annotation-driven>
- <mvc:message-convertersregister-defaults="true">
- <!-- <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> -->
- <beanclass="com.jjs.util.JsonHttpMessageConverter">
- <propertyname="supportedMediaTypes">
- <list>
- <value>text/html;charset=UTF-8</value>
- <value>application/json</value>
- </list>
- </property>
- <propertyname="features">
- <list>
- <value>WriteDateUseDateFormat</value>
- <value>WriteMapNullValue</value>
- <value>QuoteFieldNames</value>
- </list>
- </property>
- </bean>
- </mvc:message-converters>
- </mvc:annotation-driven>
記錄一下,方便檢視