国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理

解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理

2020-08-06 15:11東小邪 Java教程

本篇文章主要介紹了解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

有時(shí)在Spring MVC中返回JSON格式的response的時(shí)候會(huì)使用@ResponseBody注解,不過在處理java8中時(shí)間的時(shí)候會(huì)很麻煩,一般我們使用的HTTPMessageConverter是MappingJackson2HttpMessageConverter,它默認(rèn)返回的時(shí)間格式是這種:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"startDate" : {
  "year" : 2010,
  "month" : "JANUARY",
  "dayOfMonth" : 1,
  "dayOfWeek" : "FRIDAY",
  "dayOfYear" : 1,
  "monthValue" : 1,
  "hour" : 2,
  "minute" : 2,
  "second" : 0,
  "nano" : 0,
  "chronology" : {
   "id" : "ISO",
   "calendarType" : "iso8601"
  }
 }

但是我們不會(huì)返回這種給前端使用,針對(duì)LocalDate想要返回的格式是2016-11-26,而LocalDateTime想要返回的格式是2016-11-26 21:04:34這樣的數(shù)據(jù)。通過項(xiàng)目研究并查閱相關(guān)資料,這里介紹下個(gè)人研究中實(shí)現(xiàn)的兩種方式。

解決方法一:

若是maven項(xiàng)目,在pom中引入下面的jar包:

?
1
2
3
4
5
<dependency>
   <groupId>com.fasterxml.jackson.datatype</groupId>
   <artifactId>jackson-datatype-jsr310</artifactId>
   <version>2.8.5</version>
 </dependency>

然后在你想要JSON化的POJO字段的get函數(shù)上加上一個(gè)@JsonSerializer注解,如下

?
1
2
3
4
5
6
7
8
9
10
11
import com.fasterxml.jackson.annotation.JsonFormat;
 
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
public LocalDateTime getBirthday() {
    return this.loginTime;
  }
 
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
public LocalDateTime getLastLoginTime() {
    return this.loginTime;
  }

這種方式的優(yōu)點(diǎn)是可以針對(duì)具體域類型設(shè)置不同顯示方式,然而優(yōu)點(diǎn)也是缺點(diǎn),因?yàn)槊總€(gè)日期屬性都要手動(dòng)添加,實(shí)際中日期屬性又是普遍必備,并且需要額外引入jsr310的jar包。

解決方法二:

繼承ObjectMapper來實(shí)現(xiàn)返回json字符串。MappingJackson2HttpMessageConverter主要通過ObjectMapper來實(shí)現(xiàn)返回json字符串。這里我們編寫一個(gè)JsonUtil類,獲取ObjectMapper以針對(duì)java8中新的日期時(shí)間API,注冊(cè)相應(yīng)的JsonSerializer<T>。

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
 * json處理工具類
 *
 *
 */
@Component
public class JsonUtil {
 
  private static final ObjectMapper mapper;
 
  public ObjectMapper getMapper() {
    return mapper;
  }
 
  static {
 
    mapper = new ObjectMapper();
 
    SimpleModule module = new SimpleModule();
    module.addSerializer(LocalDate.class, new LocalDateSerializer());
    module.addSerializer(LocalTime.class, new LocalTimeSerializer());
    module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
    mapper.registerModule(module);
  }
 
  public static String toJson(Object obj) {
    try {
      return mapper.writeValueAsString(obj);
    } catch (Exception e) {
      throw new RuntimeException("轉(zhuǎn)換json字符失敗!");
    }
  }
 
  public <T> T toObject(String json, Class<T> clazz) {
    try {
      return mapper.readValue(json, clazz);
    } catch (IOException e) {
      throw new RuntimeException("將json字符轉(zhuǎn)換為對(duì)象時(shí)失敗!");
    }
  }
}
 
class LocalDateSerializer extends JsonSerializer<LocalDate> {
 
  private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
  @Override
  public void serialize(LocalDate value, JsonGenerator jgen, SerializerProvider provider)
      throws IOException, JsonProcessingException {
    jgen.writeString(dateFormatter.format(value));
  }
}
 
class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
 
  private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
  @Override
  public void serialize(LocalDateTime value, JsonGenerator jgen, SerializerProvider provider)
      throws IOException, JsonProcessingException {
    jgen.writeString(dateTimeFormatter.format(value));
  }
 
}
 
class LocalTimeSerializer extends JsonSerializer<LocalTime> {
 
  private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
 
  @Override
  public void serialize(LocalTime value, JsonGenerator jgen, SerializerProvider provider)
      throws IOException, JsonProcessingException {
    jgen.writeString(timeFormatter.format(value));
 
  }
 
}

然后在springmvc的配置文件中,再將<mvc:annotation-driven/>改為以下配置,配置一個(gè)新的json轉(zhuǎn)換器,將它的ObjectMapper對(duì)象設(shè)置為JsonUtil中的objectMapper對(duì)象,此轉(zhuǎn)換器比spring內(nèi)置的json轉(zhuǎn)換器優(yōu)先級(jí)更高,所以與json有關(guān)的轉(zhuǎn)換,spring會(huì)優(yōu)先使用它。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<mvc:annotation-driven>
    <mvc:message-converters>
      <bean
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="objectMapper" value="#{jsonUtil.mapper}" />
        <property name="supportedMediaTypes">
          <list>
            <value>application/json;charset=UTF-8</value>
          </list>
        </property>
      </bean>
    </mvc:message-converters>
  </mvc:annotation-driven>

然后java8中的幾種日期和時(shí)間類型就可以正常友好的顯示了。優(yōu)點(diǎn)是全局統(tǒng)一管理日期和時(shí)間等類型,缺點(diǎn)對(duì)pojo中的某個(gè)域做特殊處理。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/jicp/p/6387757.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产脚交av在线一区二区 | 北条麻妃在线一区二区 | 精精国产xxxx视频在线播放7 | 一级毛片免费看 | 亚洲伊人久久影院 | 黄色免费观看 | 亚洲永久免费 | 欧美精品导航 | 自拍视频在线观看 | 国产精品永久免费视频 | 国产精品com | 日韩在线资源 | 免费av在线电影 | 国产免费自拍av | 拍真实国产伦偷精品 | 高清在线一区二区 | 一本色道久久综合狠狠躁篇的优点 | 黄色片网站在线 | 国产在线一区二区三区 | 久草中文在线 | 色视频网站在线观看 | 国产精品亲子伦av一区二区三区 | 中文字幕一区在线 | 国产精品久久久久久久久久久免费看 | 中文字幕亚洲一区二区va在线 | 欧美涩涩网站 | 欧美日韩一区二区在线观看 | 精品久久久久久久久久久下田 | 91精品国产综合久久福利 | 操操操操操操 | 久久综合久久久 | 一级毛片在线播放 | 欧美国产精品一区 | 毛片网站免费在线观看 | 91精品国产综合久久久久久丝袜 | 国产一区二区三区免费视频 | 日韩免费在线 | 日韩一级 | 欧美成年网站 | 免费一看一级毛片 | 中文字幕av在线 |