ホームページ >バックエンド開発 >Golang >Go で JSON データをカスタム データ構造にアンマーシャリングする方法

Go で JSON データをカスタム データ構造にアンマーシャリングする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 14:35:02788ブラウズ

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

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。