Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich JSON mit dynamischen Schlüsseln in Strukturfelder in Go?

Wie entmarshaliere ich JSON mit dynamischen Schlüsseln in Strukturfelder in Go?

Mary-Kate Olsen
Freigeben: 2024-11-16 00:07:03
Original
606 Leute haben es durchsucht

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

Unmarshalling dynamischer Schlüssel in Strukturfelder in Go

Bei der Arbeit mit JSON-Daten, die keiner vorgegebenen Struktur entsprechen, wird das Unmarshalling schwieriger herausfordernd. In diesem Fall haben Sie eine JSON-Konfigurationsdatei mit dynamischen Schlüsseln in einem Objekt namens „things“.

Um dieses Problem zu beheben, besteht eine Lösung darin, eine Karte in Ihrer Struktur zu verwenden, um die dynamischen Schlüssel zu erfassen. Hier ist ein Beispiel:

type X struct {
    Things map[string]Thing
}

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

Anstatt für jeden Schlüssel ein spezifisches Strukturfeld zu definieren, ist das Feld „Dinge“ eine Zuordnung, die Schlüssel-Wert-Paare speichert, wobei der Schlüssel der dynamische Schlüssel ist.

Um die JSON-Daten mit diesem Ansatz zu entmarshalieren, würden Sie etwa Folgendes tun:

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

Dadurch wird das JSON in die „X“-Struktur entmarshaliert, wobei die dynamischen Schlüssel den entsprechenden Strukturinstanzen darin zugeordnet werden die „Dinge“-Map.

Wenn Sie den Schlüsselwert jedoch immer noch als Feld in der Struktur und nicht als Teil des Map-Schlüssels haben möchten, können Sie diesen Ansatz verwenden:

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

...

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

Dazu gehört das Hinzufügen eines „-`json“-Tags zum Feld „Name“, um es beim Unmarshalling zu ignorieren. Nach dem Unmarshalling wird eine Schleife verwendet, um die dynamischen Schlüssel dem Feld „Name“ jeder Strukturinstanz in der Karte zuzuweisen.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON mit dynamischen Schlüsseln 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