Maison > Article > développement back-end > Comment puis-je personnaliser le marshaling JSON pour « time.Time » dans Go ?
Personnalisation du marshaling JSON pour Time.Time
Dans Go, la fonction Marshal générique du package encoding/json sérialise les valeurs time.Time comme chaînes utilisant un format ISO 8601 par défaut. Cependant, il est possible de personnaliser ce comportement en remplaçant la disposition utilisée pour le marshaling temporel.
Considérez la structure suivante :
<code class="go">type MyStruct struct { StartTime time.Time Name string }</code>
Pour utiliser une disposition temporelle personnalisée lors du marshaling MyStruct vers JSON, nous pouvons intégrer le type time.Time dans une structure personnalisée qui remplace les méthodes MarshalText et MarshalJSON. Voici un exemple :
<code class="go">import ( "encoding/json" "time" ) type CustomTime struct { time.Time Layout string } func (ct CustomTime) MarshalText() ([]byte, error) { return []byte(ct.Format(ct.Layout)), nil } func (ct CustomTime) MarshalJSON() ([]byte, error) { return []byte(`"` + ct.Format(ct.Layout) + `"`), nil }</code>
Dans ce type personnalisé, nous avons intégré le time.Time et ajouté un champ Layout supplémentaire pour spécifier la chaîne de mise en page souhaitée. En remplaçant les méthodes MarshalText et MarshalJSON, nous pouvons contrôler le formatage du champ time.
Pour utiliser CustomTime avec votre structure, remplacez le champ time.Time par un champ CustomTime et initialisez le champ Layout avec la mise en page souhaitée. chaîne. Par exemple :
<code class="go">type CustomMyStruct struct { StartTime CustomTime Name string } func main() { s := CustomMyStruct{ StartTime: CustomTime{ Time: time.Now(), Layout: "2006-01-02 15:04:05", }, Name: "ali", } data, err := json.Marshal(s) if err != nil { panic(err) } fmt.Println(string(data)) }</code>
Ce code sérialisera l'instance MyStruct au format JSON, en utilisant la disposition temporelle spécifiée.
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!