Gestion JSON des valeurs SQL NULL dans Go
Lorsque vous travaillez avec des types de données SQL nullables dans Go, les types sql.Nullxxx sont souvent utilisés pour autoriser les valeurs nulles. Cependant, cela peut entraîner des problèmes de formatage lors de l'encodage de telles structures en JSON à l'aide du package json.
Par défaut, les types sql.Nullxxx sont marshalés en tant qu'objets avec un niveau supplémentaire en raison de leur nature de structure. Cela peut entraîner une sortie JSON indésirable. Pour résoudre ce problème, envisagez d'implémenter les interfaces json.Marshaller et json.Unmarshaler pour un type personnalisé qui intègre le type sql.Nullxxx.
Par exemple, le type JsonNullInt64 suivant peut être utilisé pour coder les valeurs sql.NullInt64 comme null ou entiers :
type JsonNullInt64 struct { sql.NullInt64 } func (v JsonNullInt64) MarshalJSON() ([]byte, error) { if v.Valid { return json.Marshal(v.Int64) } else { return json.Marshal(nil) } } func (v *JsonNullInt64) UnmarshalJSON(data []byte) error { var x *int64 if err := json.Unmarshal(data, &x); err != nil { return err } if x != nil { v.Valid = true v.Int64 = *x } else { v.Valid = false } return nil }
Lors de l'utilisation du JsonNullInt64, il sera codé de la manière attendue, permettant une représentation JSON appropriée sans le niveau supplémentaire.
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!