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

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

通過 XML 解析器動(dòng)態(tài)將 ZonedDateTime 字符串映射到 LocalDateTime

通過 XML 解析器動(dòng)態(tài)將 ZonedDateTime 字符串映射到 LocalDateTime

紅糖糍粑 2023-09-06 16:45:31
我有一個(gè) XML 響應(yīng)字符串: <timestamp ts="2018-12-05T08:00:00+02:00">55.5</timestamp>我在JAXB注釋的幫助下將其映射為:public class Timestamp {    @XmlAttribute(name = "ts")    private String timeStampAsString;    @XmlValue    private Double value;它按預(yù)期工作,但我想自動(dòng)解析 from DateTime,String所以我理想的解決方案應(yīng)該有public class Timestamp {    @XmlAttribute(name = "ts")    private LocalDateTime timeStampAsLocalDateTime;    @XmlValue    private Double value;我知道我可以在以下幫助下解析字符串:ZonedDateTime.parse(zonedDateTimeAsString).toLocalDateTime();但我不確定是否有辦法解析這個(gè)on fly。
查看完整描述

1 回答

?
牛魔王的故事

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

這可以通過 來完成XmlAdapter。


創(chuàng)建一個(gè)擴(kuò)展類,XmlAdapter將其轉(zhuǎn)換String為LocalDateTime


public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {


    @Override

    public LocalDateTime unmarshal(String v) throws Exception {

        if (v == null) {

            return null;

        }

        return ZonedDateTime.parse(v).toLocalDateTime();

    }


    @Override

    public String marshal(LocalDateTime v) throws Exception {

        if (v == null) {

            return null;

        }

        return v.toString();

    }

 }

并注釋要轉(zhuǎn)換為 LocalDateTime 的字段:


    @XmlAttribute(name="ts")

    @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)

    private LocalDateTime timeStampAsLocalDateTime;

(正如評論中已經(jīng)提到的LocalDateTime可能有問題,OffsetDateTime或者Instant可能更適合。這種方法是相同的,只是替換類和解析邏輯)


查看完整回答
反對 回復(fù) 2023-09-06
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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