Heim > Backend-Entwicklung > Golang > Wie entpacke ich JSON-Daten in eine benutzerdefinierte Datenstruktur in Go?

Wie entpacke ich JSON-Daten in eine benutzerdefinierte Datenstruktur in Go?

Susan Sarandon
Freigeben: 2024-11-06 14:35:02
Original
781 Leute haben es durchsucht

How to Unmarshal JSON Data into a Custom Data Structure in Go?

Unmarshaling von JSON-Daten in eine benutzerdefinierte Datenstruktur

In Go ist es oft notwendig, JSON-Daten in bestimmte Datenstrukturen zu entmarshalieren. Dies kann durch die Definition benutzerdefinierter Typen und die Implementierung der json.Unmarshaler-Schnittstelle erreicht werden.

Problemstellung

Angenommen, wir haben JSON-Daten mit zwei Arrays von Bestellinformationen: Asks und Gebote. Wir möchten diese Daten in eine Struktur mit zwei Feldern entmarshalieren: Asks und Bids, wobei jedes Feld ein Teil der Order-Strukturen ist.

Benutzerdefinierter Typ und Unmarshaler-Implementierung

Um unsere gewünschte Datenstruktur zu erstellen, definieren wir einen benutzerdefinierten Typ namens Order:

<code class="go">type Order struct {
    Price float64
    Volume float64
}</code>
Nach dem Login kopieren

Als nächstes implementieren wir die json.Unmarshaler-Schnittstelle für den Order-Typ. Dadurch können wir angeben, wie die JSON-Daten in unsere benutzerdefinierte Struktur geparst werden sollen:

<code class="go">func (o *Order) UnmarshalJSON(data []byte) error {
    var v [2]float64
    if err := json.Unmarshal(data, &v); err != nil {
        return err
    }
    o.Price = v[0]
    o.Volume = v[1]
    return nil
}</code>
Nach dem Login kopieren

Diese Implementierung erwartet, dass die JSON-Daten für eine Bestellung ein Array aus zwei Floats sind, die den Preis und das Volumen darstellen.

Unmarshaling der JSON-Daten

Mit unserem benutzerdefinierten Typ und der UnmarshalJSON-Implementierung können wir jetzt die JSON-Daten wie folgt entmarshalieren:

<code class="go">b := []byte(`{"Asks": [[21, 1], [22, 1]] ,"Bids": [[20, 1], [19, 1]]}`)
m := new(Message)
if err := json.Unmarshal(b, &m); err != nil {
    // handle error
}

fmt.Println(m.Asks[0].Price) // 21</code>
Nach dem Login kopieren

Durch die Implementierung der json.Unmarshaler-Schnittstelle haben wir unser Ziel erreicht, die JSON-Daten in eine benutzerdefinierte Datenstruktur zu entmarshalieren, die die Bestellinformationen genauer darstellt.

Das obige ist der detaillierte Inhalt vonWie entpacke ich JSON-Daten in eine benutzerdefinierte Datenstruktur 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