ホームページ > バックエンド開発 > Golang > Go で不明なフィールド名を持つ JSON をアンマーシャリングする方法

Go で不明なフィールド名を持つ JSON をアンマーシャリングする方法

Linda Hamilton
リリース: 2024-12-11 11:28:15
オリジナル
350 人が閲覧しました

How to Unmarshal JSON with Unknown Field Names in Go?

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

問題:

次の JSON データをアンマーシャリングするJSON 応答の構造が一貫している場合、不明なフィールド名は困難になる可能性があります

解決策:

キー/値ストアとしてマップを使用すると、不明なフィールド名を持つインスタンスを処理できるようになります。マップの値は、JSON データの共通構造を表す構造体である必要があります。

例:

次の JSON 構造を想定します:

{
    "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]]
    }
}
ログイン後にコピー

対応する Go構造体:

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

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

fmt.Println(data)
for k, v := range data {
    fmt.Println(k, v)
}
ログイン後にコピー

出力:

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]]}
ログイン後にコピー

マップを利用する、コードは未知のフィールド名を効果的に処理しながら、データを既知の構造体に正確に抽出します。フィールド。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート