需要自訂解碼才能將 JSON 解碼為具有切片映射的結構。使用預設行為,映射保持為空。
使用自訂 Unmarshaler:
在 UnmarshalJSON 方法中:
替代解決方案(不使用地圖):
如果JSON 結構是固定的,則可以在不使用地圖的情況下調整目標結構以符合JSON 佈局。
範例:
使用自訂UnmarshalJSON 方法的自訂解組程式碼:
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // Decode keys and values var obj map[string]json.RawMessage if err := json.Unmarshal(d, &obj); err != nil { return err } // Extract "last" field if last, ok := obj["last"]; ok { if err := json.Unmarshal(last, &r.Last); err != nil { return err } delete(obj, "last") } // Decode and assign Pair field r.Pair = make(map[string][]Candles, len(obj)) for key, val := range obj { cc := []Candles{} if err := json.Unmarshal(val, &cc); err != nil { return err } r.Pair[key] = cc } return nil }</code>
透過調整結構的替代解決方案:
<code class="go">type OHLC_RESS struct { Pair []Candles `json:"XXBTZUSD"` Last int64 `json:"last"` }</code>
以上是如何使用切片映射將 JSON 物件解組為結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!