国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java Web程序中利用Spring框架返回JSON格式的日期

2019-11-26 14:17:31
字體:
來源:轉載
供稿:網友

返回Json時格式化日期Date
第一步:創建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> 

效果如下:
格式化前

2016525164908927.png (231×51)

格式化后

2016525164931835.png (265×51)

進階:返回自定義格式日期
使用@ResponseBody時返回json字符串的日期格式。Date類型屬性默認返回一個Long型的時間戳,怎樣能夠返回自定義的日期格式?
解決方案:目前有兩種方式實現,
1、局部修改(網上較多,但不推薦);
繼承Jackson的抽象類:JsonSerializer<T>,然后在javabean的屬性getter()上添加注解@JsonSerialize即可實現。
代碼如下:

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 數據格中日期格式化處理  */ 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來實現返回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> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铁岭市| 龙南县| 鞍山市| 克山县| 松江区| 招远市| 张家界市| 周至县| 福海县| 凌源市| 沧源| 本溪市| 甘泉县| 龙州县| 巧家县| 通江县| 泗阳县| 屏东县| 元朗区| 永宁县| 金溪县| 维西| 沧州市| 岑巩县| 阿勒泰市| 原阳县| 宜兰县| 衡水市| 清流县| 新野县| 九龙坡区| 娱乐| 兰坪| 论坛| 丹巴县| 贡山| 舟曲县| 教育| 昌都县| 股票| 桦甸市|