JSON omitempty 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 中处理 `json:'omitempty'` 和 `time.Time` 字段?的详细内容。更多信息请关注PHP中文网其他相关文章!