Heim > Backend-Entwicklung > Golang > Wie kann ich das JSON-Unmarshaling in einer bestimmten Struktur in Go anpassen?

Wie kann ich das JSON-Unmarshaling in einer bestimmten Struktur in Go anpassen?

Linda Hamilton
Freigeben: 2024-11-07 05:58:03
Original
882 Leute haben es durchsucht

How to Customize JSON Unmarshaling into a Specific Struct in Go?

Benutzerdefiniertes Unmarshaling von JSON-Daten in eine bestimmte Struktur

In Go ist das Unmarshaling von JSON-Daten in eine vordefinierte Struktur unkompliziert. Was aber, wenn Sie die Datenstruktur noch weiter anpassen möchten? Angenommen, Sie haben die folgenden JSON-Daten:

<code class="json">{
  "Asks": [
    [21, 1],
    [22, 1]
  ],
  "Bids": [
    [20, 1],
    [19, 1]
  ]
}</code>
Nach dem Login kopieren

Sie können ganz einfach eine Struktur definieren, die dieser Struktur entspricht:

<code class="go">type Message struct {
    Asks [][]float64 `json:"Asks"`
    Bids [][]float64 `json:"Bids"`
}</code>
Nach dem Login kopieren

Sie bevorzugen jedoch möglicherweise eine speziellere Datenstruktur:

<code class="go">type Message struct {
    Asks []Order `json:"Asks"`
    Bids []Order `json:"Bids"`
}

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

Benutzerdefiniertes Unmarshaling mit json.Unmarshaler

Um die JSON-Daten in dieser speziellen Struktur zu entmarshalieren, können Sie die json.Unmarshaler-Schnittstelle in Ihrer Bestellstruktur implementieren:

<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 gibt an, dass der Order-Typ aus einem Array von Floats mit zwei Elementen und nicht aus der Standarddarstellung für eine Struktur (ein Objekt) dekodiert werden soll.

Beispielverwendung:

<code class="go">m := new(Message)
err := json.Unmarshal(b, &m)
fmt.Println(m.Asks[0].Price) // Output: 21</code>
Nach dem Login kopieren

Durch die Implementierung von json.Unmarshaler können Sie den Unmarshalling-Prozess ganz einfach an Ihre spezifischen Datenstrukturanforderungen anpassen.

Das obige ist der detaillierte Inhalt vonWie kann ich das JSON-Unmarshaling in einer bestimmten Struktur in Go anpassen?. 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