> 백엔드 개발 > Golang > XML을 비정렬화할 때 Go의 time.Time 필드에 대한 날짜 구문 분석을 사용자 정의하는 방법은 무엇입니까?

XML을 비정렬화할 때 Go의 time.Time 필드에 대한 날짜 구문 분석을 사용자 정의하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-07 17:49:02
원래의
648명이 탐색했습니다.

How to Customize Date Parsing for time.Time Fields in Go When Unmarshalling XML?

time.Time 필드를 사용하여 Go에서 사용자 정의 XML 날짜 구문 분석

Golang은 XML 데이터를 사용자 정의 구조체로 역마샬링할 수 있는 유연성을 제공하지만 그렇지 않습니다. XML을 역마샬링할 때 time.Time 필드에 대한 사용자 정의 날짜 형식 지정을 지원하지 않습니다. 반환된 날짜 형식이 기본 Go 형식과 다를 때 구문 분석 오류가 발생할 수 있습니다.

CustomUnmarshaler 솔루션

이 제한을 극복하려면 다음을 사용하여 사용자 정의 구조체를 생성할 수 있습니다. 익명의 time.Time 필드를 만들고 자신만의 UnmarshalXML 메서드를 구현하세요. 이 방법은 사용자 정의 형식을 사용하여 날짜 문자열을 구문 분석하고 이에 따라 time.Time 필드를 설정합니다.

type customTime struct {
    time.Time
}

func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    const shortForm = "20060102" // yyyymmdd date format
    var v string
    d.DecodeElement(&v, &start)
    parse, err := time.Parse(shortForm, v)
    if err != nil {
        return err
    }
    *c = customTime{parse}
    return nil
}
로그인 후 복사

사용자 정의 구조체 통합

트랜잭션 구조체를 다음으로 업데이트합니다. 사용자 정의 시간 필드 포함:

type Transaction struct {
    //...
    DateEntered     customTime     `xml:"enterdate"`
    //...
}
로그인 후 복사

이제 XML 역정렬화는 customTime 구조체를 사용하고 정의된 형식에 따라 날짜 문자열을 구문 분석합니다.

추가 참고 사항

XML 요소가 날짜에 대한 속성을 사용하는 경우 동일한 방식으로 UnmarshalXMLAttr을 구현해야 합니다. 지침은 제공된 코드 조각의 예를 참조하세요.

위 내용은 XML을 비정렬화할 때 Go의 time.Time 필드에 대한 날짜 구문 분석을 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿