Maison > développement back-end > Golang > Comment gérer `json:'omitempty'` avec les champs `time.Time` dans Go ?

Comment gérer `json:'omitempty'` avec les champs `time.Time` dans Go ?

Barbara Streisand
Libérer: 2024-12-30 21:29:14
original
970 Les gens l'ont consulté

How to Handle `json:

JSON omitempty with time.Time Field

Dans Go, l'annotation json,omitempty" permet d'exclure les champs avec des valeurs vides du JSON sérialisation. Cependant, cela ne fonctionne pas avec les champs time.Time car ils ont une valeur nulle qui est considérée comme une date valide.

Pour Pour résoudre ce problème, définissez le champ time.Time sur time.Time{} au lieu de le laisser avec une valeur nulle. Cela demandera à l'encodeur JSON de traiter le champ comme vide.

Considérez l'exemple suivant :

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))
}
Copier après la connexion

Sortie :

{"Timestamp":"2015-09-18T00:00:00Z"}
Copier après la connexion

Vous pouvez également utiliser un pointeur sur time.Time et le régler sur zéro pour atteindre l'objectif même effet :

type MyStruct struct {
    Timestamp *time.Time `json:",omitempty"`
    Date      *time.Time `json:",omitempty"`
    Field     string    `json:",omitempty"`
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal