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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 07:06:10387parcourir

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

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

Désassembler un tableau JSON contenant des valeurs de différents types peut poser un défi dans Go en raison de l'exigence pour une définition de type explicite dans les tableaux Go.

Cas Étude :

Considérons l'exemple JSON non valide suivant :

["NewYork", 123]

Une tentative de décodage de ce tableau en tableau Go échouerait car le tableau Go nécessite un type fixe, qui est inconnu dans ce cas.

Solution :

Pour surmonter cette limitation, Go fournit le type interface{}, qui permet le stockage de valeurs de tout type. En utilisant interface{}, il devient possible de désorganiser les tableaux JSON contenant des types de valeurs mixtes, comme démontré ci-dessous :

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)
}

Dans cet exemple, nous définissons un type personnalisé UntypedJson comme une carte de clés de chaîne vers des tranches de interface{}. Le tableau JSON est ensuite désorganisé dans l'instance UntypedJson. L'instruction fmt.Printf affiche les données non marshalées, qui contiennent les valeurs mixtes du tableau JSON.

En utilisant le type interface{}, il devient possible de démarsaler des tableaux JSON contenant des valeurs de différents types, offrant ainsi une plus grande visibilité. solution flexible et polyvalente pour des scénarios de données complexes.

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!

Déclaration:
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