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 중국어 웹사이트의 기타 관련 기사를 참조하세요!