一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java Web程序中利用Spring框架返回JSON格式的日期

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

2020-05-05 14:42hellostory JAVA教程

這里我們來介紹一下Java Web程序中利用Spring框架返回JSON格式的日期的方法,前提注意使用@DatetimeFormat時要引入一個類庫joda-time-版本.jar,否則會無法訪問相應(yīng)路徑

返回Json時格式化日期Date
第一步:創(chuàng)建CustomObjectMapper類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * 解決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);
  }
}

第二步:配置如下:

?
1
2
3
4
5
6
7
<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>

效果如下:
格式化前

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

格式化后

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

 

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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));
  }
}

使用方式: 

?
1
2
3
4
@JsonSerialize(using = CustomDateSerializer.class)
public Date getCreateDate() {
  return createDate;
}

2、全局修改(強烈推薦):
MappingJacksonHttpMessageConverter主要通過ObjectMapper來實現(xiàn)返回json字符串。這里我們繼承該類,注冊一個JsonSerializer<T>。然后在配置文件中注入自定義的ObjectMapper。
代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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中配置:

?
1
2
3
4
5
6
7
8
<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>

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美在线视频一区二区 | 欧美精品国产一区二区三区 | 日韩影院在线 | 国产精品久久久久久吹潮 | 色婷婷综合久久久中文字幕 | 四虎精品成人a在线观看 | 成人国产在线观看 | 欧美亚洲国产精品久久久 | 92国产福利视频一区二区 | 色吧欧美| 成人丁香婷婷 | 亚洲 欧美 成人 | 九九九久久久 | 国产一卡二卡3卡4卡四卡在线视频 | julianann办公室| 免费在线公开视频 | 亚洲天堂在线视频播放 | 四虎影视库永久在线地址 | 校园春色偷拍自拍 | 免费精品99久久国产综合精品 | 欧美亚洲国产另类在线观看 | 日韩国产欧美视频 | 国产区最新 | 免费片在线观看 | 天天射久久 | 校花被老头夺去第一次动图 | 粉嫩尤物在线456 | 国产福利不卡 | 四虎最新网址在线观看 | 亚洲日本视频在线观看 | 久久精品动漫99精品动漫 | 邪恶肉肉全彩色无遮盖 | 秋霞综合网 | 国产xxxxxx久色视频在 | 九九99热久久精品在线6 | 被强迫调教的高辣小说 | free极度另类性欧美 | 女人与zzzooooxxx| 被教官揉了一晚上的奶小说 | 秋霞一级 | 日本阿v精品视频在线观看 日本xxx片免费高清在线 |