Maison > développement back-end > Golang > Comment puis-je analyser efficacement des structures JSON complexes à l'aide de « json.Unmarshal » de Go ?

Comment puis-je analyser efficacement des structures JSON complexes à l'aide de « json.Unmarshal » de Go ?

Patricia Arquette
Libérer: 2024-12-18 07:11:11
original
212 Les gens l'ont consulté

How Can I Effectively Parse Complex JSON Structures Using Go's `json.Unmarshal`?

Analyse JSON complexe avec Go Unmarshal

Dans Go, le package encoding/json fournit la fonction json.Unmarshal pour analyser les données JSON. Ces données peuvent être désorganisées dans une structure prédéfinie ou un type interface{} pour itérer des structures de données inattendues. Cependant, analyser un JSON complexe peut s'avérer difficile.

Par exemple, considérons le JSON suivant :

{
  "k1": "v1",
  "k2": "v2",
  "k3": 10,
  "result": [
    [
      ["v4", "v5", {"k11": "v11", "k22": "v22"}],
      ...
      ["v4", "v5", {"k33": "v33", "k44": "v44"}]
    ],
    "v3"
  ]
}
Copier après la connexion

Pour analyser ce JSON à l'aide de json.Unmarshal, nous pouvons créer une variable d'interface{} et stockez-y le résultat analysé :

type MyData struct {
  v1 string
  v2 string
  v3 int
  result [][]MySubData
  result2 string
}

type MySubData struct {
  v1 string
  v2 string
  result map[string]string
}

var f interface{}
err := json.Unmarshal(b, &f)
Copier après la connexion

Après le démarshalage, la variable f sera une carte avec des clés de chaîne et une interface vide valeurs. Pour accéder à ces données, nous utilisons une assertion de type pour convertir f en une map[string]interface{} et la parcourir :

m := f.(map[string]interface{})
for k, v := range m {
  switch vv := v.(type) {
    case string:
      // Handle string values
    case int:
      // Handle integer values
    case []interface{}:
      // Handle array values
    default:
      // Handle unknown types
  }
}
Copier après la connexion

Cette approche nous permet de travailler avec des structures de données JSON inattendues tout en conservant le type sécurité. Pour plus de détails, reportez-vous à l'article original sur JSON et Go.

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