springMVC中josn的日期類型輸出默認是時間戳,須要進行日期格式轉換。java
格式化輸出jsonspring
方法一、(適用spring3.x和4.x的版本)數據庫
在實體類的getter方法上面添加@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")json
就能夠將json的日期格式化。須要導入的json的相關jar包 mybatis
@JsonFromat存在於jackson-annotations-2.1.0.jar中。
Maven項目須要添加的依賴: mvc
<!-- json數據 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.core.version}</version> </dependency> <properties> <jackson.core.version>2.4.2</jackson.core.version> </properties>
在IDEA中查看maven的jar包依賴 app
優缺點:maven
優勢是簡單方便,缺點是須要在每一個須要的屬性的getter方法上面添加。宏觀的看比較繁瑣,但實際開發中ide
也就一行代碼的事情,惟一很差的是mybatis自動生成實體類會覆蓋。測試
方法2(在spring3.x版本中測試可用)
在上面的方法中雖然簡單方便,但缺點也很明顯,自動生成代碼會覆蓋實體類,並且每一個日期屬性都要手動添加,
實際中日期屬性又是廣泛必備。所以,大可全局處理,統一格式。這裏須要說下,在數據庫中的date和timestamp
都會被mybatis轉換成date對象。至於生日精確到日、時間精確到到秒的格式規範可讓顯示層作處理。
統一成yyyy-MM-dd HH:mm:ss。
MappingJacksonHttpMessageConverter主要經過ObjectMapper來實現返回json字符串。這裏咱們繼承該類,註冊
一個JsonSerializer<T>。而後在配置文件中注入自定義的ObjectMapper。
第一步:編寫子類繼承ObjectMapper
package cn.ll.ssm.controller.converter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializerProvider; import org.codehaus.jackson.map.ser.CustomSerializerFactory; /** * 項目名稱:springmvc_02_ssm * 類名稱:CustomJsonDateConverter * 類描述:解決Date類型返回json格式爲自定義格式 * 建立人:LL * 建立時間:2018年4月29日 上午11:13:08 * @version */ public class CustomJsonDateConverter extends ObjectMapper { public CustomJsonDateConverter(){ CustomSerializerFactory factory = new CustomSerializerFactory(); factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){ @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }); this.setSerializerFactory(factory); } }
第二步:在SpringMVC.xml中進行配置
<mvc:annotation-driven conversion-service="conversionService" validator="validator"> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper" ref="customObjectMapper"></property> </bean> </mvc:message-converters> </mvc:annotation-driven> <bean id="customObjectMapper" class="cn.ll.ssm.controller.converter.CustomJsonDateConverter"></bean>
第三步:
這個配置沒法和上一個@JsonFormat共同使用。因爲全局統一了日期格式,date和datetime以及timestamp都是
一個格式,若是生日等date字段須要精簡,只能在顯示層裁剪。
參考:http://www.jb51.net/article/103032.htm