Heim > Backend-Entwicklung > Golang > Wie gehe ich mit „json:'omitempty'' mit „time.Time'-Feldern in Go um?

Wie gehe ich mit „json:'omitempty'' mit „time.Time'-Feldern in Go um?

Barbara Streisand
Freigeben: 2024-12-30 21:29:14
Original
970 Leute haben es durchsucht

How to Handle `json:

JSON omitempty with time.Time Field

In Go können Sie mit der Annotation „json,omitempty“ Felder mit leeren Werten aus JSON ausschließen Serialisierung funktioniert jedoch nicht mit time.Time-Feldern, da diese einen Nullwert haben, der als gültig gilt Datum.

Um dieses Problem zu beheben, setzen Sie das Feld time.Time auf time.Time{}, anstatt es auf einem Nullwert zu belassen. Dadurch wird der JSON-Encoder angewiesen, das Feld als leer zu behandeln.

Betrachten Sie das folgende Beispiel:

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))
}
Nach dem Login kopieren

Ausgabe:

{"Timestamp":"2015-09-18T00:00:00Z"}
Nach dem Login kopieren

Alternativ können Sie einen Zeiger verwenden auf time.Time und setzen Sie es auf Null, um den gleichen Effekt zu erzielen:

type MyStruct struct {
    Timestamp *time.Time `json:",omitempty"`
    Date      *time.Time `json:",omitempty"`
    Field     string    `json:",omitempty"`
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit „json:'omitempty'' mit „time.Time'-Feldern in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage