多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > 框架設(shè)計(jì) > SpringMVC 設(shè)置全局DateTime json返回格式

SpringMVC 設(shè)置全局DateTime json返回格式

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-06-05 08:52:34 閱讀次數(shù):8817次

對(duì)部份返回DateTime的項(xiàng)目,只需要在指定屬性上添加@JsonSerialize 使用自定義的json轉(zhuǎn)換格式便可自定義返回DateTime格式

但是對(duì)項(xiàng)目中返回有多個(gè)DateTime字段來(lái)講,上面的方法明顯不適用,這時(shí)候需要自定義全局的DateTime轉(zhuǎn)換器:

1、配置文件:

<!-- 采取SpringMVC自帶的JSON轉(zhuǎn)換工具,支持@ResponseBody注解 --> <bean class=" org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean> <!-- 避免IE履行AJAX時(shí),返回JSON出現(xiàn)下載文件 --> <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、自己實(shí)現(xiàn)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注冊(cè)轉(zhuǎn)換器上傳入自定義日期格式便可

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,但是個(gè)人感覺(jué)太復(fù)雜了,設(shè)置個(gè)日期格式而已,要配置,自己實(shí)現(xiàn)這么多步驟!期待更簡(jiǎn)單的全局配置方式。。。




生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产xxxxx在线播放 | 日韩精品一区二区三区高清 | 国产亚洲欧美在线播放网站 | 69国产成人精品视频软件 | 手机免费视频 | xart欧美在线播放精品4k | 亚洲天堂成人在线观看 | 磁力天堂网在线资源www | 亚洲小说春色综合另类网蜜桃 | 在线观看视频网站www色 | 国产视频一区在线 | 天天狠狠弄夜夜狠狠躁·太爽了 | 色黄污在线看黄污免费看黄污 | 亚a在线| 日本高清免费中文字幕不卡 | 欧美成人亚洲欧美成人 | 亚洲欧美激情精品一区二区 | 久久精品免费一区二区三区 | 国产精品成人免费福利 | 一二三四在线观看免费播放视频 | 亚洲欧美日韩中文字幕网址 | 国产免费网站看v片元遮挡 国产免费午夜a无码v视频 | 欧美 亚洲 激情 | 欧美视频亚洲视频 | 国产护士资源总站 | 亚洲天堂成人在线 | 国产免费播放一区二区三区 | 亚洲免费三级 | 波多野结衣一区二区三区高清在线 | 自拍视频网 | 久久五月天综合 | 国产一区二区三区久久精品 | 欧美精品成人久久网站 | 日韩色网站| 国产欧美第一页 | 欧美最猛性xxxx | 成年人免费看的视频 | 亚洲第一网站免费视频 | 国产成人亚洲综合在线 | 日本天堂视频在线观看 | 亚洲精品国产一区二区 |