欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

jackson中怎么自定義全局序列化、反序列化

這篇文章將為大家詳細(xì)講解有關(guān)jackson中怎么自定義全局序列化、反序列化,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

目前創(chuàng)新互聯(lián)建站已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、慶云網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、創(chuàng)建序列化類

創(chuàng)建一個(gè)序列化類然后繼承JsonSerializer,重寫serialize序列化方法。其中第一個(gè)參數(shù)localDateTime為JsonSerializer的泛型,表示的是被序列化的類型的值,第二個(gè)參數(shù)jsonGenerator表示的是用于輸出生成的Json內(nèi)容,第三個(gè)參數(shù)暫時(shí)沒明白什么應(yīng)用場景。重寫方法一般是將想要序列化的字符串傳入 jsonGenerator.writeString。

public final class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
    public static final LocalDateTimeSerializer INSTANCE = new LocalDateTimeSerializer();

    public LocalDateTimeSerializer() {
    }
    @Override
    public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        jsonGenerator.writeString(DateUtil.format(localDateTime, DateUtil.DateTimeFormatEnum.DATE_TIME_FORMAT_4));
    }
}

二、創(chuàng)建反序列化類

創(chuàng)建兩個(gè)類,一個(gè)類繼承JsonDeserializer,一個(gè)類繼承KeyDeserializer,重寫deserialize反序列化方法。參數(shù)jsonParser用于讀取json內(nèi)容的解析,deserializationContext可用于訪問此有關(guān)反序列化的上下文(暫時(shí)也不知道怎么用),返回值則是JsonDeserializer的泛型對(duì)象,表示要反序列化的對(duì)象。一般用法是通過jsonParser.getText().trim()獲取該字段json字符串,然后將該字符串轉(zhuǎn)換為對(duì)象返回。

public final class LocalTimeDeserializer extends JsonDeserializer<LocalTime> {
    public static final LocalTimeDeserializer INSTANCE = new LocalTimeDeserializer();

    public LocalTimeDeserializer() {
    }
    @Override
    public LocalTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        String text = jsonParser.getText().trim();
        return LocalTime.parse(text, DateUtil.DATE_TIME_FORMATTER_6);
    }
}
public final class LocalDateTimeKeyDeserializer extends KeyDeserializer {
    public static final LocalDateTimeKeyDeserializer INSTANCE = new LocalDateTimeKeyDeserializer();

    public LocalDateTimeKeyDeserializer() {
    }
    @Override
    public Object deserializeKey(String s, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        return StringUtils.isBlank(s) ? null : LocalDateTime.parse(s, DateUtil.DATE_TIME_FORMATTER_4);
    }
}

三、將兩個(gè)類注冊(cè)進(jìn)入jackson核心對(duì)象objectMapper

@Bean
public ObjectMapper objectMapper(){
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        //不注釋,會(huì)導(dǎo)致swagger報(bào)錯(cuò)
        //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        //關(guān)閉日期序列化為時(shí)間戳的功能
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        //關(guān)閉序列化的時(shí)候沒有為屬性找到getter方法,報(bào)錯(cuò)
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
        //關(guān)閉反序列化的時(shí)候,沒有找到屬性的setter報(bào)錯(cuò)
        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        //序列化的時(shí)候序列對(duì)象的所有屬性
        objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
        //反序列化的時(shí)候如果多了其他屬性,不拋出異常
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        //如果是空對(duì)象的時(shí)候,不拋異常
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        SimpleModule simpleModule = new SimpleModule();
        //json值序列化
        simpleModule.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE);
        //json值反序列化
        simpleModule.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
        //json鍵序列化
        simpleModule.addKeySerializer(LocalDateTime.class,LocalDateTimeSerializer.INSTANCE);
        //json鍵反序列化
        simpleModule.addKeyDeserializer(LocalDateTime.class, LocalDateTimeKeyDeserializer.INSTANCE);
        objectMapper.registerModule(simpleModule);
        return objectMapper;
    }

關(guān)于jackson中怎么自定義全局序列化、反序列化就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:jackson中怎么自定義全局序列化、反序列化
URL分享:http://aaarwkj.com/article6/igegog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、虛擬主機(jī)、網(wǎng)站維護(hù)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
国产三级三级三级av精品| 日韩精品一区二区三区四区在线视频| 国产国语激情对白在线| av网址不卡在线免费观看| 9热在线视频精品这里只有| 厕所偷拍视频一区二区三区| 青青草原在线免费视频| 亚洲精品第一页中文字幕| 性感美女国产精品一区二区| 萌白的所有视频在线观看| 91成人伦理在线观看| 亚洲av乱码一区二区三区观影| 色哟哟亚洲精品在线视频| 日本激情精品在线观看| 一级丰满少妇av大片| 国产欧美日本一区二区| 一区二区三区特黄色片| 五月婷婷少妇中文字幕| 美国真人性做爰视频免费| 久久视热频这里只有精品| 欧美日韩视频在线第一页| 国产精品伊人久久综合网| 蜜桃视频在线观看视频免费| 在线视频网友自拍偷拍| 亚洲各类熟女们中文字幕| 在线中文字幕日韩有码| 91手机国产三级在线| 欧美夫妻香蕉视频网站| 中文字幕午夜av福利| 加勒比在线观看欧美一区| 亚洲品质一区二区三区| 成人精品超碰一区二区| 偷拍福利视频一区二区三区| 国产91在线精品超碰人人| 久久日韩一区二区三区| 日本韩国精品视频在线| 中文字幕五月久久婷热| 欧美福利免费在线视频| av天堂最新资源在线| 日韩高清伦理一区二区| 人妻久久一区二区三区精品99|