JSON データをカスタム データ構造にアンマーシャリングする
Go では、多くの場合、JSON データを特定のデータ構造にアンマーシャリングする必要があります。これは、カスタム タイプを定義し、json.Unmarshaler インターフェイスを実装することで実現できます。
問題ステートメント
注文情報の 2 つの配列を含む JSON データがあるとします。Asks と入札。このデータを、Asks と Bids の 2 つのフィールドを持つ構造体にアンマーシャリングします。各フィールドは Order 構造体のスライスです。
カスタム タイプとアンマーシャラーの実装
目的のデータ構造を作成するには、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 データが、価格と数量を表す 2 つの float の配列であることが想定されます。
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 中国語 Web サイトの他の関連記事を参照してください。