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