Maison > développement back-end > Golang > Comment gérer les valeurs SQL NULL dans Go JSON Marshalling ?

Comment gérer les valeurs SQL NULL dans Go JSON Marshalling ?

Mary-Kate Olsen
Libérer: 2025-01-03 01:47:43
original
968 Les gens l'ont consulté

How to Handle SQL NULL Values in Go JSON Marshalling?

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

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!

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