
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 ?
1 2 3 4 5 | {
"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
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | {
"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
Pour désorganiser ce JSON dans un tableau d'objets, vous pouvez utiliser le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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)
}
|
Copier après la connexion
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!