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

Comment regrouper du JSON imbriqué dans un tableau d'objets dans Go ?

Barbara Streisand
Libérer: 2024-11-25 10:59:14
original
366 Les gens l'ont consulté

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

Désagrégation du JSON imbriqué dans un tableau d'objets dans Go

Problème

Considérez les données JSON suivantes :

{
   "1001":{
      "level":10,
      "monster-id":1001,
      "skill-level":1,
      "aimer-id":301
   },
   "1002":{
      "level":12,
      "monster-id":1002,
      "skill-level":1,
      "aimer-id":302
   },
   "1003":{
      "level":16,
      "monster-id":1003,
      "skill-level":2,
      "aimer-id":303
   }
}
Copier après la connexion

Le le but est de transformer ce JSON en un tableau de Monster objets.

type Monster struct {
    MonsterId  int32
    Level      int32
    SkillLevel int32
    AimerId    int32
}
Copier après la connexion

Solution

Pour y parvenir, suivez ces étapes :

  1. Définissez MonsterCollection : Créez un type MonsterCollection pour contenir une carte d'objets Monster avec de la ficelle clés.
type MonsterCollection struct {
    Pool map[string]Monster
}
Copier après la connexion
  1. Implémenter la méthode FromJson : Définir une méthode FromJson sur le type MonsterCollection pour gérer le démarshaling.
func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data *map[string]Monster
    b := []byte(jsonStr)
    return json.Unmarshal(b, &data)
}
Copier après la connexion
  • L'utilisation de var data *map[string]Monster évite l'utilisation de l'interface{}, garantissant que la carte résultante a le type souhaité.
  • La transmission des données sous forme de pointeur garantit que les modifications apportées lors du démarshalage sont reflétées dans le champ Pool de MonsterCollection.
  1. Corriger le type de clé dans le pool : Modifiez le type de clé de la carte du pool en chaîne pour correspondre aux clés du JSON data.
  2. Utilisez les balises Struct : Ajoutez des balises de structure JSON à la structure Monster pour spécifier les noms de champs dans les données JSON.
type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}
Copier après la connexion
  1. Appelez FromJson : Appelez la méthode FromJson avec la chaîne JSON pour désorganiser les données dans le MonsterCollection.
mc := new(MonsterCollection)
err := mc.FromJson(jsonStr)
Copier après la connexion
  1. Vérifiez les erreurs : Gérez toutes les erreurs renvoyées par FromJson à des fins de débogage.
  2. Accédez aux objets : Utilisez le champ Pool de la MonsterCollection pour accéder au monstre individuel objets.
for id, monster := range mc.Pool {
    fmt.Println(id, monster)
}
Copier après la connexion

En suivant ces étapes, vous pouvez réussir à désassembler les données JSON imbriquées dans un tableau d'objets Monster dans Go.

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