> 백엔드 개발 > Golang > Go에서 JSON 데이터를 사용자 정의 데이터 구조로 역정렬화하는 방법은 무엇입니까?

Go에서 JSON 데이터를 사용자 정의 데이터 구조로 역정렬화하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-06 14:35:02
원래의
784명이 탐색했습니다.

How to Unmarshal JSON Data into a Custom Data Structure in Go?

JSON 데이터를 사용자 정의 데이터 구조로 역마샬링

Go에서는 JSON 데이터를 특정 데이터 구조로 역마샬링해야 하는 경우가 많습니다. 이는 사용자 정의 유형을 정의하고 json.Unmarshaler 인터페이스를 구현하여 달성할 수 있습니다.

문제 설명

두 가지 주문 정보 배열인 Asks 및 입찰. 우리는 이 데이터를 Asks 및 Bids라는 두 개의 필드가 있는 구조체로 역마샬링하려고 합니다. 여기서 각 필드는 Order 구조체의 일부입니다.

사용자 정의 유형 및 Unmarshaler 구현

원하는 데이터 구조를 생성하기 위해 Order라는 사용자 정의 유형을 정의합니다.

<code class="go">type Order struct {
    Price float64
    Volume float64
}</code>
로그인 후 복사

다음으로 Order 유형에 대한 json.Unmarshaler 인터페이스를 구현합니다. 이를 통해 JSON 데이터를 사용자 정의 구조로 구문 분석하는 방법을 지정할 수 있습니다.

<code class="go">func (o *Order) UnmarshalJSON(data []byte) error {
    var v [2]float64
    if err := json.Unmarshal(data, &v); err != nil {
        return err
    }
    o.Price = v[0]
    o.Volume = v[1]
    return nil
}</code>
로그인 후 복사

이 구현에서는 주문에 대한 JSON 데이터가 가격과 수량을 나타내는 두 개의 부동 소수점 배열이 될 것으로 예상합니다.

JSON 데이터 역마샬링

사용자 정의 유형과 UnmarshalJSON 구현을 사용하면 이제 다음과 같이 JSON 데이터를 역마샬링할 수 있습니다.

<code class="go">b := []byte(`{"Asks": [[21, 1], [22, 1]] ,"Bids": [[20, 1], [19, 1]]}`)
m := new(Message)
if err := json.Unmarshal(b, &m); err != nil {
    // handle error
}

fmt.Println(m.Asks[0].Price) // 21</code>
로그인 후 복사

json.Unmarshaler 인터페이스를 구현함으로써 JSON 데이터를 주문 정보를 보다 정확하게 나타내는 사용자 정의 데이터 구조로 역마샬링하려는 목표를 달성했습니다.

위 내용은 Go에서 JSON 데이터를 사용자 정의 데이터 구조로 역정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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