ホームページ >バックエンド開発 >Golang >JSON データを Go マップに部分的にアンマーシャリングする方法は?

JSON データを Go マップに部分的にアンマーシャリングする方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 15:51:11471ブラウズ

How to Partially Unmarshal JSON Data into a Go Map?

Go で JSON をマップに部分的にアンマーシャリングする方法

Go で JSON データをアンマーシャリングするのは簡単ですが、ネストされたデータを処理するときに課題が発生しますキーがデータのタイプを示すオブジェクト。これに対処するには、「encoding/json」パッケージを利用できます。

提供されたコードでは、JSON データを map[string][]byte にマップし、効果的にキーに変換しようとしています。 -value 文字列と生の JSON のペア。ただし、json.MapObject 関数が存在しないため、この解決策は実行できません。

代わりに、map[string]json.RawMessage を利用して目的を達成できます。 RawMessage は、解析されていない JSON を保持する不透明なタイプです。このアプローチを使用して、以下のコードは、提供された JSON データを objmap 変数にアンマーシャリングします。

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

これで、objmap 内の個々のキーと値のペアにアクセスして、JSON データをさらに解析できるようになります。たとえば、「sendMsg」値を解析するには:

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

同様に、「say」値を文字列として解析できます:

var str string
err = json.Unmarshal(objmap["say"], &str)

注: 適切なアンマーシャリングを有効にするために、sendMsg 構造体内の変数を忘れずにエクスポートしてください。例:

type sendMsg struct {
    User string
    Msg  string
}

https://play.golang.org/p/OrIjvqIsi4-.

で実際の例を見つけることができます。

以上がJSON データを Go マップに部分的にアンマーシャリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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