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