在 Go 中,將 JSON 資料解組到預定義結構非常簡單。但是,如果您想進一步自訂資料結構怎麼辦?假設您有以下JSON 資料:
<code class="json">{ "Asks": [ [21, 1], [22, 1] ], "Bids": [ [20, 1], [19, 1] ] }</code>
您可以輕鬆定義一個結構來匹配此結構:
<code class="go">type Message struct { Asks [][]float64 `json:"Asks"` Bids [][]float64 `json:"Bids"` }</code>
但是,您可能更喜歡更專業的資料結構:
<code class="go">type Message struct { Asks []Order `json:"Asks"` Bids []Order `json:"Bids"` } type Order struct { Price float64 Volume float64 }</code>
要將JSON 資料解組到此專用結構中,您可以在Order 結構上實作json.Unmarshaler 介面:
<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>
此實作指定應從浮點數的兩元素數組而不是結構(物件)的預設表示形式解碼Order 類型。
用法範例:
<code class="go">m := new(Message) err := json.Unmarshal(b, &m) fmt.Println(m.Asks[0].Price) // Output: 21</code>
透過實作 json.Unmarshaler,您可以輕鬆自訂解組過程,以滿足您特定的資料結構要求。
以上是如何在 Go 中將 JSON 解組自訂為特定結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!