Maison > développement back-end > Golang > Comment puis-je décoder des tableaux JSON avec des types de données mixtes dans Go ?

Comment puis-je décoder des tableaux JSON avec des types de données mixtes dans Go ?

Barbara Streisand
Libérer: 2024-11-26 10:06:10
original
788 Les gens l'ont consulté

How Can I Decode JSON Arrays with Mixed Data Types in Go?

Décodage de tableaux avec des types mixtes en JSON

Lorsque vous traitez des tableaux JSON contenant des valeurs de types différents, il est essentiel de réfléchir à la manière de les désorganiser. dans un programme Go de manière efficace. Les tableaux Go nécessitent un type explicitement défini, ce qui pose un défi lors de la gestion de différents types de valeurs.

Solution : Utiliser l'interface{}

La solution réside dans l'utilisation de l'interface{} , un type spécial dans Go qui peut contenir des valeurs de n'importe quel type. En utilisant un tableau interface{}, nous permettons la flexibilité de stocker des valeurs de différents types dans le même tableau.

Exemple de mise en œuvre

Considérez l'exemple JSON suivant :

{"key": ["NewYork", 123]}
Copier après la connexion

Pour désorganiser ce JSON à l'aide de l'interface{}, nous pouvons définir un fichier de données personnalisé structure :

type UntypedJson map[string][]interface{}
Copier après la connexion

Ce type représente une carte des chaînes aux tableaux d'interface{}, permettant la possibilité de stocker des valeurs de tout type.

Démarshalisation du JSON

Pour démarshaler le JSON, nous pouvons utiliser le json.Unmarshal function :

var ut UntypedJson
json.Unmarshal([]byte(jsonString), &ut)
Copier après la connexion

La variable ut contiendra désormais les données non marshalées en tant que type UntypedJson. Les clés de la carte correspondent aux clés de l'objet JSON et les valeurs du tableau contiennent les valeurs de différents types.

Exemple Playground

Un exemple complet avec un terrain de jeu Go intégré peut à retrouver ici :

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}
Copier après la connexion

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