Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich dynamische JSON-Schlüssel in Strukturfelder in Go?

Wie entmarshaliere ich dynamische JSON-Schlüssel in Strukturfelder in Go?

Patricia Arquette
Freigeben: 2024-11-19 01:26:02
Original
954 Leute haben es durchsucht

How to Unmarshal Dynamic JSON Keys into Struct Fields in Go?

Unmarshalling dynamischer JSON-Schlüssel in Strukturfeldern in Go

Dynamische JSON-Schlüssel können eine Herausforderung darstellen, wenn sie in Strukturen mit statischen Feldnamen entmarshallt werden. Betrachten Sie die folgende JSON-Konfigurationsdatei:

{
  "things" :{
    "123abc" :{
      "key1": "anything",
      "key2" : "more"
    },
    "456xyz" :{
      "key1": "anything2",
      "key2" : "more2"
    },
    "blah" :{
      "key1": "anything3",
      "key2" : "more3"
    }
  }
}
Nach dem Login kopieren

Um diesen JSON in einer Go-Struktur darzustellen, können Sie eine Karte anstelle statischer Feldnamen verwenden:

type X struct {
    Things map[string]Thing
}

type Thing struct {
    Key1 string
    Key2 string
}
Nach dem Login kopieren

Unmarshalieren Sie dann den JSON Verwenden der json.Unmarshal-Funktion:

var x X
if err := json.Unmarshal(data, &x); err != nil {
    // handle error
}
Nach dem Login kopieren

Bei diesem Ansatz werden die dynamischen Schlüssel zu den Schlüsseln der Karte, sodass Sie bei Bedarf auf die Werte zugreifen können.

Wenn jedoch der Schlüssel Muss ein Mitglied der Thing-Struktur sein, können Sie eine Schleife schreiben, um den Schlüssel nach dem Unmarshalling hinzuzufügen:

type Thing struct {
    Name string `json:"-"` // add the field
    Key1 string
    Key2 string
}

...

// Fix the name field after unmarshal
for k, t := range x.Things {
    t.Name = k
    x.Things[k] = t
}
Nach dem Login kopieren

Mit dieser Methode können Sie sowohl den Schlüssel als Feld als auch die dynamischen Werte verwenden.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich dynamische JSON-Schlüssel in Strukturfelder 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