日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > SpringMVC 設置全局DateTime json返回格式

SpringMVC 設置全局DateTime json返回格式

來源:程序員人生   發布時間:2015-06-05 08:52:34 閱讀次數:8826次

對部份返回DateTime的項目,只需要在指定屬性上添加@JsonSerialize 使用自定義的json轉換格式便可自定義返回DateTime格式

但是對項目中返回有多個DateTime字段來講,上面的方法明顯不適用,這時候需要自定義全局的DateTime轉換器:

1、配置文件:

<!-- 采取SpringMVC自帶的JSON轉換工具,支持@ResponseBody注解 --> <bean class=" org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean> <!-- 避免IE履行AJAX時,返回JSON出現下載文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF⑻</value> <value>text/html;charset=UTF⑻</value> </list> </property> <property name="objectMapper"> <bean class="com.cml.mvc.framework.converter.DateTimeConverter"></bean> </property> </bean>

主要是在mappingJacksonHttpMessageConverter中自定義objectMapper


2、下載需要的jar

<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda</artifactId> <version>${jackson.mapper}</version> </dependency>

3、自己實現ObjectMapper

public class DateTimeConverter extends ObjectMapper { private static final long serialVersionUID = 1L; public DateTimeConverter() { this.registerModule(new BaseJodaModule()); this.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); } }

BaseJodaModule主要是修改com.fasterxml.jackson.datatype.joda.JodaModule代碼,只需要在DateTime注冊轉換器上傳入自定義日期格式便可

4、BaseJodaModule

package com.cml.mvc.framework.converter.datetime; import org.joda.time.DateMidnight; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.Duration; import org.joda.time.Instant; import org.joda.time.Interval; import org.joda.time.LocalDate; import org.joda.time.LocalDateTime; import org.joda.time.LocalTime; import org.joda.time.MonthDay; import org.joda.time.Period; import org.joda.time.ReadableDateTime; import org.joda.time.ReadableInstant; import org.joda.time.ReadablePeriod; import org.joda.time.YearMonth; import org.joda.time.format.DateTimeFormat; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.datatype.joda.PackageVersion; import com.fasterxml.jackson.datatype.joda.cfg.JacksonJodaDateFormat; import com.fasterxml.jackson.datatype.joda.deser.DateMidnightDeserializer; import com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer; import com.fasterxml.jackson.datatype.joda.deser.DateTimeZoneDeserializer; import com.fasterxml.jackson.datatype.joda.deser.DurationDeserializer; import com.fasterxml.jackson.datatype.joda.deser.InstantDeserializer; import com.fasterxml.jackson.datatype.joda.deser.IntervalDeserializer; import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.joda.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.joda.deser.LocalTimeDeserializer; import com.fasterxml.jackson.datatype.joda.deser.MonthDayDeserializer; import com.fasterxml.jackson.datatype.joda.deser.PeriodDeserializer; import com.fasterxml.jackson.datatype.joda.deser.YearMonthDeserializer; import com.fasterxml.jackson.datatype.joda.deser.key.DateTimeKeyDeserializer; import com.fasterxml.jackson.datatype.joda.deser.key.LocalDateKeyDeserializer; import com.fasterxml.jackson.datatype.joda.deser.key.LocalDateTimeKeyDeserializer; import com.fasterxml.jackson.datatype.joda.deser.key.LocalTimeKeyDeserializer; import com.fasterxml.jackson.datatype.joda.ser.DateMidnightSerializer; import com.fasterxml.jackson.datatype.joda.ser.DateTimeSerializer; import com.fasterxml.jackson.datatype.joda.ser.DateTimeZoneSerializer; import com.fasterxml.jackson.datatype.joda.ser.DurationSerializer; import com.fasterxml.jackson.datatype.joda.ser.InstantSerializer; import com.fasterxml.jackson.datatype.joda.ser.IntervalSerializer; import com.fasterxml.jackson.datatype.joda.ser.LocalDateSerializer; import com.fasterxml.jackson.datatype.joda.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.joda.ser.LocalTimeSerializer; import com.fasterxml.jackson.datatype.joda.ser.PeriodSerializer; @SuppressWarnings("deprecation") public class BaseJodaModule extends SimpleModule { private static final long serialVersionUID = 1L; public static final String DATE_TIME_PATTERN = "yyyyMMddHHmmss"; private static final JacksonJodaDateFormat DATE_TIME_FORMATTER = new JacksonJodaDateFormat( DateTimeFormat.forPattern(DATE_TIME_PATTERN).withZoneUTC()); @SuppressWarnings({ "unchecked" }) public BaseJodaModule() { super(PackageVersion.VERSION); // first deserializers addDeserializer(DateMidnight.class, new DateMidnightDeserializer()); addDeserializer(DateTime.class, DateTimeDeserializer.forType(DateTime.class)); addDeserializer(DateTimeZone.class, new DateTimeZoneDeserializer()); addDeserializer(Duration.class, new DurationDeserializer()); addDeserializer(Instant.class, new InstantDeserializer()); addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer()); addDeserializer(LocalDate.class, new LocalDateDeserializer()); addDeserializer(LocalTime.class, new LocalTimeDeserializer()); JsonDeserializer<?> deser = new PeriodDeserializer(true); addDeserializer(Period.class, (JsonDeserializer<Period>) deser); addDeserializer(ReadablePeriod.class, new PeriodDeserializer(false)); addDeserializer(ReadableDateTime.class, DateTimeDeserializer.forType(ReadableDateTime.class)); addDeserializer(ReadableInstant.class, DateTimeDeserializer.forType(ReadableInstant.class)); addDeserializer(Interval.class, new IntervalDeserializer()); addDeserializer(MonthDay.class, new MonthDayDeserializer()); addDeserializer(YearMonth.class, new YearMonthDeserializer()); // then serializers: final JsonSerializer<Object> stringSer = ToStringSerializer.instance; addSerializer(DateMidnight.class, new DateMidnightSerializer());
//主要是修改這里,自定義日期格式
addSerializer(DateTime.class, new DateTimeSerializer( DATE_TIME_FORMATTER)); addSerializer(DateTimeZone.class, new DateTimeZoneSerializer()); addSerializer(Duration.class, new DurationSerializer()); addSerializer(Instant.class, new InstantSerializer()); addSerializer(LocalDateTime.class, new LocalDateTimeSerializer()); addSerializer(LocalDate.class, new LocalDateSerializer()); addSerializer(LocalTime.class, new LocalTimeSerializer()); addSerializer(Period.class, new PeriodSerializer()); addSerializer(Interval.class, new IntervalSerializer()); addSerializer(MonthDay.class, stringSer); addSerializer(YearMonth.class, stringSer); // then key deserializers addKeyDeserializer(DateTime.class, new DateTimeKeyDeserializer()); addKeyDeserializer(LocalTime.class, new LocalTimeKeyDeserializer()); addKeyDeserializer(LocalDate.class, new LocalDateKeyDeserializer()); addKeyDeserializer(LocalDateTime.class, new LocalDateTimeKeyDeserializer()); } // yes, will try to avoid duplicate registations (if MapperFeature enabled) @Override public String getModuleName() { return getClass().getSimpleName(); } @Override public int hashCode() { return getClass().hashCode(); } @Override public boolean equals(Object o) { return this == o; } }
 自定義全局DateTime json格式ok,但是個人感覺太復雜了,設置個日期格式而已,要配置,自己實現這么多步驟!期待更簡單的全局配置方式。。。




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 免费a爱片猛猛 | 99精品视频在线免费观看 | 日韩精品一区二区三区在线播放 | 国产三级毛片 | 99久久精品毛片免费播放高清 | 国产一页 | 成人精品久久久 | 欧美一区二区三区在线看 | 国产麻豆免费观看 | 国产精品一区二区三区免费看 | 国产黄a三级三级三级av在线看 | 日韩一区二区视频 | 波多野结衣国产 | a视频网站 | 青青草一区 | 亚洲福利在线观看 | 精品一区二区视频 | 成人免费亚洲 | 亚洲精品福利 | 久久都是精品 | 国产一区二区三区欧美 | 国产精品久久亚洲7777 | 日韩在线视频在线 | 亚洲一区三区 | jizz在线观看| 丁香婷婷色 | 国产欧美在线观看 | 国产视频在线一区 | 亚洲精品电影在线观看 | 不卡在线 | 国产精品99久久久久久似苏梦涵 | 国产一区二区三区网站 | 日韩av综合网 | 久久国产精品免费视频 | 精品少妇一区二区三区视频免付费 | 日韩一区二区精品 | 午夜一区 | 天堂网在线视频 | 久久熟| 中文字幕一二区 | av网站免费在线观看 |