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

Comment puis-je décoder JSON avec une structure variable dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-01 01:58:11720parcourir

How Can I Decode JSON with a Variable Structure in Go?

Décodage du JSON avec une structure variable

Lorsque vous travaillez avec des données JSON, il peut être difficile de gérer des structures de données qui varient. Dans de tels cas, les méthodes conventionnelles comme json.Unmarshal() utilisant des structures fixes deviennent peu pratiques. Voici une solution pour ce scénario :

Solution : Démarrer dans l'interface map[string]{}

Au lieu de s'appuyer sur des structures prédéfinies, nous pouvons désorganiser le JSON dans un Type générique map[string]interface{}. Cela nous permet de gérer des données JSON avec des structures variables.

Considérez le JSON suivant :

{ "votes": { "option_A": "3" } }

Pour ajouter une clé « compte » à ce JSON, nous pouvons le désorganiser comme suit :

package main

import (
    "encoding/json"
)

func main() {
    in := []byte(`{ "votes": { "option_A": "3" } }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    raw["count"] = 1
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    println(string(out))
}

Cette approche nous permet de modifier facilement la structure JSON sans être lié à un modèle de données fixe. Le type map[string]interface{} offre une flexibilité dans la gestion des structures JSON dynamiques.

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