ホームページ  >  記事  >  バックエンド開発  >  既知および未知のキー/値ペアを含む JSON を Go 構造体に解析するにはどうすればよいですか?

既知および未知のキー/値ペアを含む JSON を Go 構造体に解析するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-28 02:13:30369ブラウズ

How to Parse JSON with Known and Unknown Key/Value Pairs into a Go Struct?

任意のキー/値ペアを使用して JSON をアンマーシャルして構造化する

問題

既知および未知のキー/値ペアを使用して JSON 文字列を解析するにはどうすればよいですかGo 構造体に入れる?未知のフィールドには、任意の名前と値の型 (string、bool、float64、または int) を指定できます。

解決策

既知のフィールドを含む構造体と、未知のフィールドのマップのスライスを作成します。 :

<code class="go">type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}</code>

JSON 文字列を次の構造体にアンマーシャルします:

<code class="go">json.Unmarshal([]byte(jsonMsg), &msg)</code>

Unknowns フィールドには、不明なキー/値のペアを表すマップのリストが含まれます。

代替手段

  1. ダブル アンマーシャル:

    • まず、既知のフィールドのみを含む一時構造体にアンマーシャルします。
    • 次に、再びマップ[文字列]インターフェース{}にアンマーシャルし、未知の値を手動で抽出します。
  2. アンマーシャルと型変換:

    • マップ[文字列]インターフェイス{}にアンマーシャルします。
    • マップを反復処理し、値を適切な型に型アサートします。

考慮事項

3 つの解決策はすべて有効ですが、最も単純で洗練されたのは最初の構造体ベースのアプローチです。これにより、追加のアンマーシャルや手動の型変換の必要がなくなります。

以上が既知および未知のキー/値ペアを含む JSON を Go 構造体に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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