Maison >développement back-end >Golang >Comment désorganiser un objet JSON dans un tableau de structures en Go ?

Comment désorganiser un objet JSON dans un tableau de structures en Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 13:26:19265parcourir

How to Unmarshal a JSON Object into an Array of Structs in Go?

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

Question

Comment puis-je désorganiser le JSON suivant dans un tableau d'objets dans Go langue ?

{
    "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}
}

Solution

Le JSON fourni nécessite quelques modifications pour être valide, comme l'ajout de virgules entre les paires clé-valeur dans l'objet de niveau supérieur :

{
   "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
   }
}

Pour désorganiser ce JSON dans un tableau d'objets, vous pouvez utiliser le code suivant :

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 =&mc.Pool
    b := []byte(jsonStr)
    return json.Unmarshal(b, data)
}

Dans ce code :

  • La structure Monster représente la structure du objets.
  • La structure MonsterCollection contient un pool de monstres, chacun étant saisi par une chaîne.
  • La méthode FromJson désorganise la chaîne JSON dans la carte du pool.

Le retour d'erreur est utile à des fins de débogage, vous permettant de détecter des erreurs telles qu'une syntaxe JSON non valide.

Un exemple fonctionnel peut à retrouver sur le Golang Playground : http://play.golang.org/p/4EaasS2VLL.

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