Heim > Backend-Entwicklung > Golang > Wie entmarshalieren Sie dynamische JSON-Schlüssel mit Viper- und Go-Strukturen?

Wie entmarshalieren Sie dynamische JSON-Schlüssel mit Viper- und Go-Strukturen?

Mary-Kate Olsen
Freigeben: 2024-11-20 11:33:02
Original
529 Leute haben es durchsucht

How do you unmarshal dynamic JSON keys with Viper and Go structs?

Unmarshaling dynamischer JSON-Schlüssel mit Viper- und Go-Strukturen

In Go kann der Umgang mit JSON-Daten mit dynamischen Schlüsseln eine Herausforderung sein. Wenn Sie beispielsweise über eine JSON-Konfigurationsdatei mit einem Objekt verfügen, das Schlüssel mit unterschiedlichen Namen enthält, wie können Sie diese Daten dann in eine Go-Struktur entpacken?

Nehmen wir die folgende JSON-Konfigurationsdatei als Beispiel:

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

Um dieses Problem zu beheben, können Sie eine Karte verwenden, um die dynamischen Schlüssel darzustellen, wie in dieser aktualisierten Go-Struktur gezeigt:

type X struct {
    Things map[string]Thing
}

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

Sobald Sie die Struktur definiert haben, können Sie die entmarshalieren JSON-Daten wie diese:

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

Wenn der Name der Objektschlüssel ein Feld der „Thing“-Struktur sein soll, können Sie eine Schleife hinzufügen, um ihn nach dem Unmarshaling zuzuweisen:

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

Alternativ kann ein benutzerdefinierter JSON-Decoder verwendet werden, um die dynamischen Schlüssel zu verarbeiten, indem die Methode „Decode“ überschrieben wird. Weitere Informationen zu diesem Ansatz finden Sie in der offiziellen Go-Dokumentation.

Mit diesen Techniken können Sie dynamische JSON-Schlüssel effektiv in Go-Strukturen entmarshalieren und so mit komplexen Konfigurationsdateien und Datenstrukturen arbeiten.

Das obige ist der detaillierte Inhalt vonWie entmarshalieren Sie dynamische JSON-Schlüssel mit Viper- und Go-Strukturen?. 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