將JSON 資料解組為自訂資料結構
在Go 中,通常需要將JSON 資料解組為特定的資料結構。這可以透過定義自訂類型並實作 json.Unmarshaler 介面來實現。
問題陳述
假設我們有包含兩個訂單資訊數組的 JSON 資料:Asks 和出價。我們希望將此資料解組到具有兩個欄位的結構中:Asks 和 Bids,其中每個欄位都是 Order 結構體的一部分。
自訂型別和解組器實作
為了建立我們想要的資料結構,我們定義一個名為Order 的自訂類型:
<code class="go">type Order struct { Price float64 Volume float64 }</code>
接下來,我們為Order 類型實作json.Unmarshaler 介面。這允許我們指定如何將 JSON 資料解析為自訂結構:
<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>
此實作期望訂單的 JSON 資料是兩個浮點數的數組,分別表示價格和數量。
解組JSON 資料
使用我們的自訂類型和UnmarshalJSON 實現,我們現在可以如下解組JSON 資料:
<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>
透過實現json.Unmarshaler 接口,我們實現了將JSON 資料解組為自訂資料結構的目標,該資料結構可以更準確地表示訂單資訊。
以上是如何在 Go 中將 JSON 資料解組為自訂資料結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!