在Spring MVC中經常需要返回json數據,對于日期類型數據可能會遇到返回格式化不對,返回的時間相差8小時等問題,今天我們一起來分享下在實際開發商過程中遇到的這兩個問題。當然解決方法有很多種,本文中只選一種簡單的方式。
- 日期返回數據沒有格式化
解決辦法:在model中,使用注解方式格式化。示例代碼如下:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
- 返回時間相差8個小時
解決辦法:這個主要是因為時區的問題,只要在Spring的配置文件中設置好時區就好了。代碼如下:
<mvc:annotation-driven>
<!-- 處理請求時返回json字符串的中文亂碼問題 -->
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
<!--處理時區問題-->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<!-- 處理responseBody 里面日期類型 -->
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
<!-- 時區指定 -->
<property name="timeZone" value="GMT+8" />
<!-- 為null字段時不顯示 -->
<property name="serializationInclusion">
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
PS:醬紫我們就輕松解決了一個尷尬的問題了。祝小伙伴們學習愉快,元旦快樂!