Maison > développement back-end > Golang > Comment faire la distinction entre les champs JSON nuls et manquants dans Go ?

Comment faire la distinction entre les champs JSON nuls et manquants dans Go ?

DDD
Libérer: 2024-11-30 15:34:16
original
1056 Les gens l'ont consulté

How to Distinguish Between JSON Null and Missing Fields in Go?

Champs JSON nuls et champs manquants dans Go : une comparaison

Lorsque vous travaillez avec des données JSON dans Go, il est crucial de distinguer les champs qui sont explicitement définis sur null et les champs qui manquent simplement dans l'entrée JSON. Cette distinction devient nécessaire lorsque les données JSON représentent une structure Golang.

Les champs nuls et manquants donnent des valeurs nulles dans les champs de structure Go correspondants. Cependant, faire la distinction entre les deux scénarios peut être essentiel pour déterminer si un champ a été intentionnellement défini sur null ou n'a pas été inclus dans les données JSON.

Pour relever ce défi, deux approches sont disponibles :

Utilisation de structures facultatives avec des génériques (Go 1.18)

Go 1.18 introduit génériques, permettant la création d’une structure générique facultative pour gérer cette situation. La structure facultative comporte un champ booléen défini indiquant la présence d'une valeur dans l'entrée JSON et un pointeur de valeur vers la valeur réelle.

type Optional[T any] struct {
    Defined bool
    Value   *T
}
Copier après la connexion
type Payload struct {
    Field1 Optional[string] `json:"field1"`
    Field2 Optional[bool]   `json:"field2"`
    Field3 Optional[int32]  `json:"field3"`
}
Copier après la connexion

Utilisation de structures facultatives personnalisées (pré-génériques )

Avant les génériques, une structure facultative* personnalisée peut être créée pour chaque type de données qui doit être géré comme facultatif.

type OptionalString struct {
    Defined bool
    Value   *string
}
Copier après la connexion
type Payload struct {
    SomeField1 string         `json:"somefield1"`
    SomeField2 OptionalString `json:"somefield2"`
}
Copier après la connexion

En utilisant ces techniques, les développeurs peuvent facilement discerner si un champ JSON a été explicitement défini sur null ou s'il était absent des données d'entrée, offrant ainsi une plus grande flexibilité et un plus grand contrôle sur la validation des données et traitement.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal