Heim >Backend-Entwicklung >Golang >Wie kann ich JSON mit Leerzeichen in Schlüsselnamen mithilfe von „encoding/json' von Go entmarshalieren?

Wie kann ich JSON mit Leerzeichen in Schlüsselnamen mithilfe von „encoding/json' von Go entmarshalieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-25 07:57:10519Durchsuche

How Can I Unmarshal JSON with Spaces in Key Names Using Go's `encoding/json`?

JSON-Schlüsselnamen mit Leerzeichen: Unmarshalling möglich gemacht

Die Deserialisierung von JSON-Daten mit komplexen Schlüsseln, die Leerzeichen enthalten, kann beim Unmarshalling oft zu Herausforderungen führen. Lassen Sie uns ein konkretes Beispiel mit der Encoding/JSON-Bibliothek in Go untersuchen.

Problem:

Betrachten Sie das folgende JSON-Schema:

[
  {"Na me": "Platypus", "Order": "Monotremata"},
  {"Na me": "Quoll", "Order": "Dasyuromorphia"}
]

Verwendet die Standard-Encoding/JSON-Bibliothek, um diese Daten in das folgende Go zu entmarshalieren struct:

type Animal struct {
    Name  string `json:"Na me"`
    Order string `json:"Order,omitempty"`
}

führt aufgrund des Leerzeichens im JSON-Schlüssel zu einem leeren Feld „Name“.

Ursache:

Das Leerzeichen im JSON-Schlüssel verwirrt den Unmarshalling-Prozess. Die Bibliothek versucht, den Schlüssel „Na me“ mit einem Feld in der Animal-Struktur abzugleichen, aber es gibt kein entsprechendes Feld.

Lösung:

Um dieses Problem zu beheben Stellen Sie sicher, dass die Strukturfeld-Tags im JSON-Tag die richtigen Schlüsselnamen angeben, einschließlich der Leerzeichen:

type Animal struct {
    Name  string `json:"Na me"`
    Order string `json:"Order,omitempty"`
}

Mit diesem überarbeiteten Tagging wird das Unmarshalling durchgeführt Der Prozess kann die JSON-Schlüssel erfolgreich den richtigen Strukturfeldern zuordnen, was zur erwarteten Ausgabe führt:

[
  {Name:Platypus Order:Monotremata}
  {Name:Quoll Order:Dasyuromorphia}
]

Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit Leerzeichen in Schlüsselnamen mithilfe von „encoding/json' von Go entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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