Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich JSON in ein Array von Objekten in Go?

Wie entmarshaliere ich JSON in ein Array von Objekten in Go?

Mary-Kate Olsen
Freigeben: 2024-11-27 08:19:09
Original
226 Leute haben es durchsucht

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

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
}
Nach dem Login kopieren

In diesem Code:

  • Die Monster-Struktur verwendet JSON-Tags, um die Feldnamen dem entsprechenden JSON zuzuordnen Schlüssel.
  • Die MonsterCollection-Struktur enthält eine Zuordnung von Zeichenfolgen zu Monster-Strukturen, wobei die eindeutigen Bezeichner als Schlüssel verwendet werden.
  • Die FromJson-Methode von MonsterCollection nimmt die JSON-Zeichenfolge als Argument und entmarshmiert sie in die Datenzuordnung, weist die Zuordnung dem Poolfeld zu und gibt alle aufgetretenen Fehler zurück.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage