Ho il seguente JSON, e voglio analizzare in array di classe:In Go Language, come faccio a fare un array unson a un array di oggetti?
{
"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}
}
Ecco quello che sto cercando di fare, ma non è riuscito:
type Monster struct {
MonsterId int32
Level int32
SkillLevel int32
AimerId int32
}
type MonsterCollection struct {
Pool map[string]Monster
}
func (mc *MonsterCollection) FromJson(jsonStr string) {
var data interface{}
b := []byte(jsonStr)
err := json.Unmarshal(b, &data)
if err != nil {
return
}
m := data.(map[string]interface{})
i := 0
for k, v := range m {
monster := new(Monster)
monster.Level = v["level"]
monster.MonsterId = v["monster-id"]
monster.SkillLevel = v["skill-level"]
monster.AimerId = v["aimer-id"]
mc.Pool[i] = monster
i++
}
}
Il compilatore lamentano la v ["livello"] < < operazione non valida. indice di tipo interface().
wow, grazie mille. Sto solo imparando il GO lang e ho ancora tanto da imparare. La tua risposta è molto utile! – Nick
ancora una domanda, c'è comunque io posso usare int32 per la chiave della mappa? il valore dovrebbe essere monster-id è questo caso ma quando cambio il tipo in int32, il codice di esempio dà errore. – Nick
Le chiavi JSON devono essere stringhe. Quello che devi fare è prima analizzare un 'map [string] Monster' e quindi copiare ciascun mostro in un' map [int] Monster'. –