Unmarshaling von JSON in ein Array von Objekten in Go
Das Parsen von JSON-Daten in benutzerdefinierte Go-Strukturen ist für viele Programmieraufgaben unerlässlich. In dieser Frage wird untersucht, wie JSON in Go in ein Array von Objekten analysiert wird.
Das Problem
Die in der Frage bereitgestellten JSON-Daten weisen ein bestimmtes Format auf, wobei jeder Schlüssel stellt einen eindeutigen Bezeichner dar und der entsprechende Wert ist ein verschachteltes Objekt, das mehrere Attribute enthält. Das Ziel besteht darin, diese JSON-Daten in ein Array von Strukturen zu entpacken, wobei jedes Element im Array eines der verschachtelten Objekte im JSON darstellt.
Das in der Frage bereitgestellte Code-Snippet versucht, das JSON in ein zu analysieren MonsterCollection-Struktur, die eine Zuordnung von Zeichenfolgen zu Monster-Strukturen enthält. Der Compiler meldet jedoch einen ungültigen Operationsfehler aufgrund einer Typinkongruenz.
Die Lösung
Das Hauptproblem beim Code-Snippet besteht darin, dass es den JSON in einer Schnittstelle entmarshmiert Typ {}, der dynamisches Tippen ermöglicht, aber über eingeschränkte Funktionalität verfügt. Um auf die spezifischen Felder in den verschachtelten Objekten zuzugreifen, muss der v-Variablen in der Schleife der richtige Typ zugewiesen werden.
Zusätzlich versucht der Code, die Monster-Objekte mit ganzzahligen Schlüsseln in eine Karte einzufügen. Allerdings handelt es sich bei der Pool-Map um eine Zuordnung von Strings zu Monster-Strukturen, daher sollten die Schlüssel Strings sein.
Der folgende Code zeigt, wie JSON ordnungsgemäß in ein Array von Monster-Strukturen entmarshaliert wird:
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 }
In diesem Code:
Jetzt können die JSON-Daten Sie können in die MonsterCollection-Struktur eingeordnet und über die Pool-Karte darauf zugegriffen werden, was eine bequeme Möglichkeit bietet, einzelne Monster anhand ihrer eindeutigen Kennungen abzurufen.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON in ein Array von Objekten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!