Lors du marshalling d'une structure Go avec un champ sql.NullString, il est possible de rencontrer un JSON de sortie avec un objet imbriqué représentant le Chaîne Nulle. Cependant, cette représentation imbriquée n'est peut-être pas souhaitable.
Pour aplatir la sortie et afficher uniquement la valeur, créez un type personnalisé qui intègre sql.NullString et implémente l'interface json.Marshaler.
type MyNullString struct { sql.NullString } func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil } type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
Ce type personnalisé fournit une méthode MarshalJSON qui vérifie si la valeur NullString est valide. Si tel est le cas, il rassemble la valeur de la chaîne. Sinon, il marshale null.
En utilisant ce type personnalisé et en l'appliquant au champ Abn dans la structure Company, la sortie JSON sera aplatie, affichant uniquement la valeur Abn et en omettant l'objet imbriqué.
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!