Maison > développement back-end > Golang > Comment désorganiser JSON dans un tableau d'objets dans Go ?

Comment désorganiser JSON dans un tableau d'objets dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-27 08:19:09
original
191 Les gens l'ont consulté

How to Unmarshal JSON into an Array of Objects in Go?

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
}
Copier après la connexion

Dans ce code :

  • La structure Monster utilise des balises json pour mapper les noms de champs au JSON correspondant clés.
  • La structure MonsterCollection contient une carte de chaînes vers les structures Monster, en utilisant les identifiants uniques comme clés.
  • La méthode FromJson de MonsterCollection prend la chaîne JSON comme argument, la désorganise dans le carte de données, attribue la carte au champ Pool et renvoie toutes les erreurs rencontrées.

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!

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