>  기사  >  백엔드 개발  >  Golang의 JSON에서 비표준 시간 형식을 구문 분석하는 방법은 무엇입니까?

Golang의 JSON에서 비표준 시간 형식을 구문 분석하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-09 03:23:01867검색

How to Parse Non-Standard Time Formats from JSON in Golang?

JSON에서 비표준 시간 형식 구문 분석

JSON 데이터를 사용자 정의 구조로 디코딩할 때 날짜 형식의 불일치가 발생할 수 있습니다. 이 문제를 해결하기 위해 Golang은 사용자 정의 마샬링 및 역마샬링 기능을 구현하는 옵션을 제공합니다.

사용자 정의 마샬러 및 언마샬러 함수

사용자 정의 구문 분석 형식을 지정하려면 유형 별칭은 다음과 같습니다. 시간 필드에 대해 생성되었으며 Marshaler 및 Unmarshaler 인터페이스는 다음과 같이 구현됩니다.

type JsonBirthDate time.Time

// UnmarshalJSON translates a JSON string to a time value.
func (j *JsonBirthDate) UnmarshalJSON(b []byte) error {
    s := strings.Trim(string(b), `"`)
    t, err := time.Parse("2006-01-02", s)
    if err != nil {
        return err
    }
    *j = JsonBirthDate(t)
    return nil
}

// MarshalJSON converts a time value to a JSON string.
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

이 사용자 정의 로직은 JSON 값이 원하는 형식인지 확인하고 그에 따라 구문 분석합니다.

업데이트된 구조 및 구문 분석

구조가 사용자 정의 유형을 사용하도록 업데이트되었으며 디코딩은 평소와 같이 진행할 수 있습니다.

type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}

decoder := json.NewDecoder(req.Body)
if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}

추가 기능

편의를 위해 Format 메서드를 추가하여 날짜의 형식화된 표현을 제공할 수 있습니다.

// Format prints the date using the specified format string.
func (j JsonBirthDate) Format(s string) string {
    t := time.Time(j)
    return t.Format(s)
}

이 사용자 정의 마샬링 및 역마샬링 접근 방식을 사용하면 다음과 같은 경우에도 JSON에서 시간 값을 유연하게 구문 분석할 수 있습니다. 표준 형식에서 벗어났습니다.

위 내용은 Golang의 JSON에서 비표준 시간 형식을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.