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!