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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-11 11:28:15378ブラウズ

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

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