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

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

Linda Hamilton
Libérer: 2024-11-23 04:33:16
original
922 Les gens l'ont consulté

How to Decode JSON Arrays with Mixed Data Types in Go?

Décodage de tableaux JSON avec des types de valeurs mixtes

Dans certains cas, vous pouvez rencontrer des tableaux JSON contenant des éléments de types différents. Par exemple :

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

Les tableaux Go nécessitent que vous spécifiiez explicitement leur type, ce qui peut devenir difficile lorsqu'il s'agit de tableaux de types mixtes.

Solution utilisant l'interface{}

Pour gérer des tableaux de types mixtes, vous pouvez exploiter le type interface{}, qui autorise des valeurs de tout type. Voici comment y parvenir dans Go :

package main

import (
    "encoding/json"
    "fmt"
)

type UntypedJson map[string][]interface{}

func main() {
    j := `{"NYC": ["NewYork",123]}`
    ut := UntypedJson{}
    err := json.Unmarshal([]byte(j), &ut)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%#v", ut)
}
Copier après la connexion
  • Tout d'abord, nous définissons un type personnalisé UntypedJson qui mappe les chaînes aux tableaux d'interface{}. Cela nous permet de stocker des valeurs de n'importe quel type dans le tableau.
  • Nous utilisons json.Unmarshal pour décoder la chaîne JSON dans notre type UtnyptedJson. Puisque interface{} peut contenir n'importe quel type, elle peut gérer à la fois les éléments de chaîne et les éléments entiers du tableau.
  • Enfin, nous utilisons fmt.Printf pour afficher les données non marshalées.

Remarque : Il convient de noter que l'exemple JSON fourni est techniquement invalide, car les objets JSON doivent avoir des clés. Un exemple corrigé serait :

{"NYC": ["NewYork",123]}
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