需要自定义解组才能将 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中文网其他相关文章!