Java Web程序中利用Spring框架返回JSON格式的日期
返回Json時格式化日期Date
第一步:創(chuàng)建CustomObjectMapper類
/** * 解決SpringMVC使用@ResponseBody返回json時,日期格式默認顯示為時間戳的問題。需配合<mvc:message-converters>使用 */ @Component("customObjectMapper") public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper() { CustomSerializerFactory factory = new CustomSerializerFactory(); factory.addGenericMapping(Date.class, new JsonSerializer<Date>() { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }); this.setSerializerFactory(factory); } }
第二步:配置如下:
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper" ref="customObjectMapper"></property> </bean> </mvc:message-converters> </mvc:annotation-driven>
效果如下:
格式化前
格式化后
進階:返回自定義格式日期
使用@ResponseBody時返回json字符串的日期格式。Date類型屬性默認返回一個Long型的時間戳,怎樣能夠返回自定義的日期格式?
解決方案:目前有兩種方式實現(xiàn),
1、局部修改(網(wǎng)上較多,但不推薦);
繼承Jackson的抽象類:JsonSerializer<T>,然后在javabean的屬性getter()上添加注解@JsonSerialize即可實現(xiàn)。
代碼如下:
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; /** * @description 自定義返回JSON 數(shù)據(jù)格中日期格式化處理 */ public class CustomDateSerializer extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }
使用方式:
@JsonSerialize(using = CustomDateSerializer.class) public Date getCreateDate() { return createDate; }
2、全局修改(強烈推薦):
MappingJacksonHttpMessageConverter主要通過ObjectMapper來實現(xiàn)返回json字符串。這里我們繼承該類,注冊一個JsonSerializer<T>。然后在配置文件中注入自定義的ObjectMapper。
代碼如下:
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; 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; /** * @description 解決Date類型返回json格式為自定義格式 */ public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper(){ CustomSerializerFactory factory = new CustomSerializerFactory(); factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){ @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }); this.setSerializerFactory(factory); } }
spring-servlet.xml中配置:
<mvc:annotation-driven> <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="com.pmc.dwa.common.custom.CustomObjectMapper"></bean>
相關(guān)文章
Java內(nèi)部類_動力節(jié)點Java學院整理
內(nèi)部類是指在一個外部類的內(nèi)部再定義一個類。下面通過本文給大家java內(nèi)部類的使用小結(jié),需要的朋友參考下吧2017-04-04JAVA基于數(shù)組實現(xiàn)的商品信息查詢功能示例
這篇文章主要介紹了JAVA基于數(shù)組實現(xiàn)的商品信息查詢功能,結(jié)合實例形式詳細分析了java使用數(shù)組存儲數(shù)據(jù)實現(xiàn)的商品信息查詢功能相關(guān)操作技巧,需要的朋友可以參考下2019-11-11java String、StringBuilder和StringBuffer的區(qū)別詳解
這篇文章主要介紹了java String、StringBuilder和StringBuffer的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01Java設(shè)計模式之命令模式(Command模式)介紹
這篇文章主要介紹了Java設(shè)計模式之命令模式(Command模式)介紹,本文講解了Command模式的定義、如何使用命令模式等內(nèi)容,需要的朋友可以參考下2015-03-03SpringBoot http請求注解@RestController原理解析
這篇文章主要介紹了SpringBoot http請求注解@RestController原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01