Maison > développement back-end > Golang > Comment décoder JSON avec une structure inconnue dans Go ?

Comment décoder JSON avec une structure inconnue dans Go ?

Barbara Streisand
Libérer: 2024-12-28 10:23:11
original
368 Les gens l'ont consulté

How to Decode JSON with an Unknown Structure in Go?

Décodage de JSON avec une structure inconnue

Dans le domaine de la programmation, JSON (JavaScript Object Notation) sert souvent de moyen de représenter des données dans applications logicielles. Cependant, lorsque vous rencontrez du JSON avec une structure inconnue, l'extraction d'informations spécifiques peut poser un défi. Considérez le scénario suivant :

Vous devez traiter une chaîne JSON comme ceci :

{ 
  "votes": { 
    "option_A": "3" 
  } 
}
Copier après la connexion

Votre objectif est d'augmenter ce JSON en incluant une clé "count", ce qui donne le résultat suivant :

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}
Copier après la connexion
Copier après la connexion

Le défi vient de la structure inconnue du JSON initial. Les méthodes traditionnelles, comme l'utilisation de la fonction json.Unmarshal avec une structure typée spécifique, deviennent inapplicables.

Solution : Unmarshal dans une carte

Pour surmonter cet obstacle, nous peut tirer parti de la flexibilité des cartes de Go. L'extrait de code suivant montre comment désassembler JSON dans une map[string]interface{} :

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    in := []byte(`{ 
      "votes": { 
        "option_A": "3" 
      } 
    }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    
    // Modify the map by adding the "count" key
    raw["count"] = 1
    
    // Marshal the modified map back to JSON
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    
    fmt.Println(string(out))
}
Copier après la connexion

En désorganisant le JSON dans une carte, nous créons efficacement une structure de données indépendante du type qui peut accueillir n'importe quelle entrée. . Il nous permet d'accéder et de modifier dynamiquement le contenu JSON sans compter sur des types prédéfinis.

Le résultat final du code ci-dessus est le suivant :

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}
Copier après la connexion
Copier après la connexion

Cette approche fournit une approche pratique et flexible solution pour décoder JSON avec des structures inconnues, permettant aux développeurs d'extraire et de manipuler efficacement les données.

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