JSON をスライスのマップを含む構造体にデコードするには、カスタム アンマーシャリングが必要です。デフォルトの動作を使用すると、マップは空のままになります。
カスタム アンマーシャラーの使用:
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 中国語 Web サイトの他の関連記事を参照してください。