第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何動(dòng)態(tài)自定義日期格式的反序列化器?

如何動(dòng)態(tài)自定義日期格式的反序列化器?

茅侃侃 2022-07-06 09:45:26
我正在研究自定義JSON反序列化器并擁有以下課程public class yyyy_MM_dd_DateDeserializer extends StdDeserializer <LocalDate> { public yyyy_MM_dd_DateDeserializer() {  this(null); } public yyyy_MM_dd_DateDeserializer(Class t) {  super(t); } @Override public LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {  String dateString = jsonParser.getText();  LocalDate localDate = null;  try {   localDate = LocalDate.parse(dateString, "yyyy-MM-dd");  } catch (DateTimeParseException ex) {   throw new RuntimeException("Unparsable date: " + dateString);  }  return localDate; }}在我的請(qǐng)求課程中@Valid@JsonDeserialize(using = LocalDateDeserializer.class)@JsonSerialize(using = LocalDateSerializer.class)private LocalDate endDate;它工作正常,但我想知道我是否可以動(dòng)態(tài)傳遞日期格式。而不是硬編碼在yyyy_MM_dd_DateDeserializer. 我想從我的請(qǐng)求類(lèi)中傳遞日期格式,以便我的反序列化器更通用,任何人都可以通過(guò)發(fā)送所需的格式來(lái)使用它。
查看完整描述

3 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

我認(rèn)為你工作太努力了,沒(méi)有得到你想要的。有一種更簡(jiǎn)單的方法,無(wú)需編寫(xiě)自己的反序列化器??纯催@個(gè)問(wèn)題。本質(zhì)上它看起來(lái)像


@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="EEE MMM dd HH:mm:ss Z yyyy")

@JsonProperty("created_at") 

ZonedDateTime created_at;

而你只是戴上你自己的面具。另外,我曾經(jīng)有一個(gè)任務(wù)是解析未知格式的日期,本質(zhì)上我需要解析任何有效的日期。這是一篇描述如何實(shí)現(xiàn)它的想法的文章:Java 8 java.time package: parsing any string to date。你可能會(huì)發(fā)現(xiàn)它很有用


查看完整回答
反對(duì) 回復(fù) 2022-07-06
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

不是在使用活頁(yè)夾庫(kù)時(shí)(綁定的關(guān)鍵在于它不是動(dòng)態(tài)的。)。

但是你可以在使用簡(jiǎn)單的解析庫(kù)時(shí),比如 org.json


查看完整回答
反對(duì) 回復(fù) 2022-07-06
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

當(dāng)您使用java.time.*類(lèi)并且Jackson最好從JavaTimeModule來(lái)自jackson-datatype-jsr310模塊的注冊(cè)開(kāi)始。我們可以擴(kuò)展它并使用提供的模式注冊(cè)序列化程序,如下例所示:


import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;


import java.time.LocalDate;

import java.time.format.DateTimeFormatter;


public class JsonApp {


    public static void main(String[] args) throws Exception {

        ObjectMapper mapperIso = createObjectMapper("yyyy-MM-dd");

        ObjectMapper mapperCustom0 = createObjectMapper("yyyy/MM/dd");

        ObjectMapper mapperCustom1 = createObjectMapper("MM-dd-yyyy");


        System.out.println(mapperIso.writeValueAsString(new Time()));

        System.out.println(mapperCustom0.writeValueAsString(new Time()));

        System.out.println(mapperCustom1.writeValueAsString(new Time()));

    }


    private static ObjectMapper createObjectMapper(String pattern) {

        JavaTimeModule javaTimeModule = new JavaTimeModule();

        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(pattern)));


        ObjectMapper mapper = new ObjectMapper();

        mapper.registerModule(javaTimeModule);


        return mapper;

    }

}


class Time {


    private LocalDate now = LocalDate.now();


    public LocalDate getNow() {

        return now;

    }


    public void setNow(LocalDate now) {

        this.now = now;

    }


    @Override

    public String toString() {

        return "Time{" +

                "now=" + now +

                '}';

    }

}

Aboce 代碼打?。?/p>


{"now":"2019-02-24"}

{"now":"2019/02/24"}

{"now":"02-24-2019"}


查看完整回答
反對(duì) 回復(fù) 2022-07-06
  • 3 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)