일관되지 않은 날짜/시간 형식 비정렬화
JSON 데이터를 처리할 때 날짜/시간을 비정렬화하면 다양한 시간대 오프셋 형식으로 인해 불일치가 발생할 수 있습니다. Go의 표준 구문 분석 메커니즘은 02:00 형식의 시간대 오프셋을 예상하지만 일부 데이터에는 0200과 같은 잘못된 형식이 포함될 수 있습니다.
이 문제를 해결하기 위해 Go는 올바른 시간대 형식과 잘못된 시간대 형식을 모두 처리하는 사용자 정의 역마샬링 방법을 제공합니다. 수정된 접근 방식은 다음과 같습니다.
type MyTime struct { time.Time } func (self *MyTime) UnmarshalJSON(b []byte) (err error) { s := string(b) // Remove quotation marks s = s[1:len(s)-1] // Attempt to parse using RFC3339Nano format t, err := time.Parse(time.RFC3339Nano, s) if err != nil { // If parsing fails, try custom format without ':' t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s) } self.Time = t return } type Test struct { Time MyTime `json:"time"` }
이 사용자 정의 역마샬링 방법(UnmarshalJSON)에서는
이 접근 방식은 다음을 보장합니다. 올바른 형식과 잘못된 형식의 날짜/시간 문자열이 모두 올바르게 구문 분석됩니다.
위 내용은 Go에서 일관되지 않은 날짜/시간 형식을 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!