首頁 >後端開發 >Golang >如何在 Go 中處理 `json:'omitempty'` 和 `time.Time` 欄位?

如何在 Go 中處理 `json:'omitempty'` 和 `time.Time` 欄位?

Barbara Streisand
Barbara Streisand原創
2024-12-30 21:29:14970瀏覽

How to Handle `json:

JSON omitempty with time.Time Field

在Go 中,json,omitempty" 註解允許您從JSON 中排除具有空值的字段但是,這不適用於time.Time 字段,因為它們具有被視為有效的零值。 date.

要解決此問題,請將time.Time 欄位設為time.Time{},而不是將其保留為零值。 🎜>

考慮以下範例:

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 來達到相同的效果:

以上是如何在 Go 中處理 `json:'omitempty'` 和 `time.Time` 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn