JSONomitempty with time.Time Field
Go では、json,omitempty" アノテーションを使用して、JSON から空の値を持つフィールドを除外できますただし、time.Time フィールドには有効とみなされる値がゼロであるため、これは機能しません。 date.
この問題を解決するには、time.Time フィールドをゼロ値のままにするのではなく、time.Time{} に設定します。これにより、フィールドを空として扱うように JSON エンコーダーに指示されます。
次の点を考慮してください例:
package main import ( "encoding/json" "fmt" "time" ) type MyStruct struct { Timestamp time.Time `json:",omitempty"` Date time.Time `json:",omitempty"` Field string `json:",omitempty"` } func main() { ms := MyStruct{ Timestamp: time.Date(2015, 9, 18, 0, 0, 0, 0, time.UTC), Date: time.Time{}, Field: "", } bb, err := json.Marshal(ms) if err != nil { panic(err) } fmt.Println(string(bb)) }
出力:
{"Timestamp":"2015-09-18T00:00:00Z"}
または、time.Time へのポインターを使用し、それを nil に設定すると、同じ効果が得られます:
type MyStruct struct { Timestamp *time.Time `json:",omitempty"` Date *time.Time `json:",omitempty"` Field string `json:",omitempty"` }
以上がGo で `time.Time` フィールドを使用して `json:'omitempty'` を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。