真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化的實(shí)現(xiàn)方法

這篇文章主要講解了“Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化的實(shí)現(xiàn)方法”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化的實(shí)現(xiàn)方法”吧!

10多年的興山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整興山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“興山網(wǎng)站設(shè)計(jì)”,“興山網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化

前言

默認(rèn)的情況下,Jackson序列化/反序列化 Java8 新增的時(shí)間類型不會(huì)序列化成字符串或者時(shí)間戳,因?yàn)闆](méi)有相對(duì)應(yīng)的序列化策略,所以我們可以自己來(lái)配置對(duì)象的序列化跟反序列化策略,也可以引用jackson-datatype-jsr310的jar包來(lái)進(jìn)行處理,下面我們以LocalDateTime作為示例

引入JSR310依賴

在項(xiàng)目?jī)?nèi),我們引用下依賴


    com.fasterxml.jackson.datatype
    jackson-datatype-jsr310
    2.8.11

JSR310默認(rèn)配置

默認(rèn)的情況下,JSR310給我們提供了轉(zhuǎn)換成字符串的序列化/反序列化類,分別是LocalDateTimeSerializer/LocalDateTimeDeserializer,我們可以使用已經(jīng)有的實(shí)現(xiàn),來(lái)進(jìn)行序列化

我們往Jackson的ObjectMapper內(nèi)注冊(cè)一個(gè)JSR310提供的JavaTimeModule模塊,JavaTimeModule內(nèi),我們需要配置LocalDateTime的的序列化策略,具體代碼如下

ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
              .addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
              
objectMapper.registerModule(javaTimeModule);

自定義配置Java8時(shí)間類型的序列化/反序列化

這次,我們自定義轉(zhuǎn)換成秒級(jí)的時(shí)間戳,Jackson提供了JsonDeserializerJsonSerializer兩個(gè)抽象類,以上兩個(gè)分別是反序列化跟序列化的父類,我們繼承它并且實(shí)現(xiàn)抽象方法,具體代碼如下

public class InstantSerializer extends JsonSerializer {

    @Override
    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
        gen.writeNumber(DateUtils.toSecond(value));
    }
}

public class InstantDeserializer extends JsonDeserializer {

    @Override
    public LocalDateTime deserialize(JsonParser p, DeserializationContext txt) throws IOException, JsonProcessingException {
        return Instant.ofEpochSecond(p.getLongValue()).atZone(ZoneId.systemDefault()).toLocalDateTime();
    }
}

將定義的序列化規(guī)格,注冊(cè)到ObjectMapper里面去

ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new InstantSerializer())
              .addDeserializer(LocalDateTime.class,new InstantDeserializer());
              
objectMapper.registerModule(javaTimeModule);

總結(jié)

到此,我們大概介紹了兩種配置的方法,一種是jsr310已經(jīng)提供的,另外一種是通過(guò)繼承jackson提供的抽象類,自己進(jìn)行實(shí)現(xiàn),兩者實(shí)現(xiàn)上差不多,不過(guò)通過(guò)繼承更靈活,更可控,使用jsr310更方便,具體的使用就仁者見(jiàn)仁智者見(jiàn)智了

感謝各位的閱讀,以上就是“Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化的實(shí)現(xiàn)方法”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化的實(shí)現(xiàn)方法這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


本文題目:Jackson對(duì)Java8時(shí)間類型的序列化跟反序列化的實(shí)現(xiàn)方法
標(biāo)題路徑:http://weahome.cn/article/giohco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部