>  기사  >  백엔드 개발  >  비표준 시간 형식으로 JSON을 디코딩하는 방법은 무엇입니까?

비표준 시간 형식으로 JSON을 디코딩하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-09 08:37:02660검색

How to Decode JSON with Non-Standard Time Formats?

비표준 JSON 시간 형식에 대한 사용자 지정 비정렬화

비표준 시간 형식이 포함된 JSON을 사용자 지정 구조체로 디코딩하기 위해 내장된 마샬링 및 비정렬 함수가 유연성을 제공합니다.

다음 JSON을 고려하세요.

{
    "name": "John",
    "birth_date": "1996-10-07"
}

그리고 데이터를 보관하기 위한 사용자 정의 구조체:

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}

기본 디코더를 사용하여 이 JSON을 디코딩하는 것은 다음과 같은 이유로 실패합니다. -표준 시간 형식. 이를 처리하려면 사용자 정의 마샬링 및 역마샬링 함수를 구현하십시오.

type JsonBirthDate time.Time

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
}

func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

JsonBirthDate를 Person 구조체에 추가하고 이러한 함수를 구현하면 다음 코드가 JSON을 올바르게 디코딩합니다.

person := Person{}
decoder := json.NewDecoder(req.Body)
err := decoder.Decode(&person)
if err != nil {
    log.Println(err)
}
// person.BirthDate now contains the parsed time as a time.Time object

위 내용은 비표준 시간 형식으로 JSON을 디코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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