JSON 역마샬링을 이해하는 것은 어려울 수 있습니다. 이 문서에서는 다음 코드 조각을 사용하여 Go에서 지도를 역마샬링하는 동안 발생한 문제를 살펴봅니다.
<code class="go">import ( "encoding/json" "fmt" ) type OHLC_RESS struct { Pair map[string][]Candles Last int64 `json:"last"` } type Candles struct { // ... } func (c *Candles) UnmarshalJSON(d []byte) error { // ... } func main() { // ... }</code>
코드를 실행할 때 Last 필드가 올바르게 역마샬링되었음에도 불구하고 쌍 맵이 비어 있습니다.
옵션 1: 구조체 정의 조정
제공된 JSON 예제에 대한 가장 간단한 솔루션은 맵을 제거하고 구조체 정의를 JSON 구조에 맞추는 것입니다.
<code class="go">type OHLC_RESS struct { Pair []Candles `json:"XXBTZUSD"` Last int64 `json:"last"` }</code>
옵션 2: 사용자 정의 Unmarshaler 구현
맵 키가 동적이고 필드 태그에 하드코딩할 수 없는 경우 json.Unmarshaler의 사용자 정의 구현 인터페이스가 필요합니다. 이는 OHLC_RESS 구조체에서 UnmarshalJSON 메서드를 구현하여 달성할 수 있습니다.
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // ... }</code>
UnmarshalJSON 구현은 JSON 키와 값을 별도로 디코딩하여 "마지막" 요소를 나머지 요소와 다르게 처리합니다. 나머지 요소는 쌍 맵으로 정렬 해제됩니다.
위 내용은 다음은 제공된 기사의 내용에 맞는 질문 형식의 몇 가지 제목 옵션입니다. **직접적이고 문제 중심적:** * **키가 동적일 때 Go에서 슬라이스 맵을 비정렬화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!