Désassembler JSON en un tableau d'objets dans Go
L'analyse des données JSON dans des structures Go personnalisées est essentielle pour de nombreuses tâches de programmation. Cette question explore comment analyser JSON dans un tableau d'objets dans Go.
Le problème
Les données JSON fournies dans la question présentent un format spécifique, où chaque clé représente un identifiant unique, et la valeur correspondante est un objet imbriqué contenant plusieurs attributs. L'objectif est de regrouper ces données JSON dans un tableau de structures, où chaque élément du tableau représente l'un des objets imbriqués dans le JSON.
L'extrait de code fourni dans la question tente d'analyser le JSON en un Structure MonsterCollection, qui contient un mappage de chaînes vers les structures Monster. Cependant, le compilateur signale une erreur d'opération non valide en raison d'une incompatibilité de type.
La solution
Le principal problème avec l'extrait de code est qu'il désorganise le JSON dans une interface Type {}, qui permet une saisie dynamique mais a des fonctionnalités limitées. Pour accéder aux champs spécifiques dans les objets imbriqués, la variable v dans la boucle doit être affirmée avec le type correct.
De plus, le code tente d'insérer les objets Monster dans une carte avec des clés entières. Cependant, la mappe Pool est une mappe de chaînes vers des structures Monster, les clés doivent donc être des chaînes.
Le code suivant montre comment désorganiser correctement le JSON dans un tableau de structures Monster :
type Monster struct { MonsterId int32 `json:"monster-id"` Level int32 `json:"level"` SkillLevel int32 `json:"skill-level"` AimerId int32 `json:"aimer-id"` } type MonsterCollection struct { Pool map[string]Monster } func (mc *MonsterCollection) FromJson(jsonStr string) error { var data map[string]Monster b := []byte(jsonStr) err := json.Unmarshal(b, &data) if err != nil { return err } mc.Pool = data return nil }
Dans ce code :
Maintenant, les données JSON peut être désorganisé dans la structure MonsterCollection et accessible via la carte Pool, qui fournit un moyen pratique de récupérer des monstres individuels en utilisant leurs identifiants uniques.
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!