ホームページ >バックエンド開発 >Golang >不明なフィールド名を持つ JSON を Go 構造体にアンマーシャリングするにはどうすればよいですか?

不明なフィールド名を持つ JSON を Go 構造体にアンマーシャリングするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-17 11:45:25334ブラウズ

How to Unmarshal JSON with Unknown Field Names into a Go Struct?

不明なフィールド名を持つ JSON を構造体にアンマーシャリングする

このシナリオは、JSON 応答に不明な名前または動的な名前のフィールドが含まれている場合に発生します。これに対処するために、マップと構造体の組み合わせを利用してデータをキャプチャできます。

変更コード:

package main

import "fmt"
import "encoding/json"

var body = []byte(`{
    "unknown_field": {
            "known_field_1": [[1,2,3,4,5],[10,20,30,40,50],[100,200,300,400,500]],
            "known_field_2": [[11,21,31,41,51]],
            "known_field_3": [[12,22,32,42,52],[14,44,34,44,54]]
        }
}`)

type mData struct {
    KnownField1 [][5]int `json:"known_field_1"`
    KnownField2 [][5]int `json:"known_field_2"`
    KnownField3 [][5]int `json:"known_field_3"`
}

var data map[string]mData

func main() {
    if err := json.Unmarshal(body, &data); err != nil {
        panic(err)
    }

    fmt.Println(data)
    for k, v := range data {
        fmt.Println(k, v)
    }
}

説明:

  • 既知のフィールドを表す mData 構造体を定義します。 JSON.
  • キーが未知のフィールド名、値が mData のインスタンスであるマップ データを作成します。
  • アンマーシャリング中に、json.Unmarshal は JSON データを対応するフィールドに割り当てます。 mData はフィールド名に基づいています。
  • データ マップのキーは、 JSON.

出力:

map[unknown_field:{[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}]
unknown_field {[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}

以上が不明なフィールド名を持つ JSON を Go 構造体にアンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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