JSON 마샬링을 위한 Time.Time 레이아웃 사용자 정의
Golang의 인코딩/json 패키지에서 time.Time 값의 기본 레이아웃은 "2006"입니다. -01-02T15:04:05Z". 그러나 사용자 정의 형식 문자열을 사용하도록 이 레이아웃을 재정의할 수 있습니다.
해결책:
time.Time 필드에 대해 json.Marshal에서 사용하는 레이아웃을 재정의하려면 , time.Time을 포함하고 MarshalText 인터페이스를 구현하는 새로운 유형을 정의할 수 있습니다. 이 인터페이스는 값의 바이트 표현을 반환하는 메서드를 정의합니다. 아래 코드는 이를 달성하는 방법을 보여줍니다.
<code class="go">package main import ( "encoding/json" "fmt" "time" ) type jsonTime struct { time.Time f string } func (j jsonTime) format() string { return j.Time.Format(j.f) } func (j jsonTime) MarshalText() ([]byte, error) { return []byte(j.format()), nil } func (j jsonTime) MarshalJSON() ([]byte, error) { return []byte(`"` + j.format() + `"`), nil } func main() { jt := jsonTime{time.Now(), time.Kitchen} x := map[string]interface{}{ "foo": jt, "bar": "baz", } data, err := json.Marshal(x) if err != nil { panic(err) } fmt.Printf("%s", data) }</code>
이 코드에서 jsonTime 구조체는 time.Time 값을 포함하고 사용자 정의 format() 메서드를 정의하여 지정된 레이아웃을 사용하여 시간을 문자열로 반환합니다. . 또한 MarshalText 및 MarshalJSON 인터페이스를 구현하여 JSON 마샬링 중에 사용자 정의 문자열 표현을 반환합니다.
이 접근 방식을 사용하면 JSON 출력의 time.Time 값에 사용되는 레이아웃을 제어하고 특정 항목에 따라 사용자 정의할 수 있습니다. 요구 사항.
위 내용은 Golang에서 JSON으로 마샬링할 때 time.Time 레이아웃을 어떻게 사용자 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!