다음은 제공된 기사의 내용에 맞는 질문 형식의 몇 가지 제목 옵션입니다. **직접적이고 문제 중심적:** * **키가 동적일 때 Go에서 슬라이스 맵을 비정렬화하는 방법

Susan Sarandon
풀어 주다: 2024-10-25 11:02:02
원래의
632명이 탐색했습니다.

Here are a few title options in a question format, catering to the content of your provided article:

**Direct &  Problem-Focused:**

* **How to Unmarshal a Map of Slices in Go When Keys are Dynamic?**
* **Empty Map After Unmarshaling: Why is my Go Struct

구조체를 슬라이스 맵으로 사용자 정의 역마샬링

문제 설명

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿