Heim  >  Artikel  >  Backend-Entwicklung  >  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
Linda HamiltonOriginal
2024-11-07 05:58:03778Durchsuche

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>

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>

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>

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>

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>

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!

Stellungnahme:
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