Go では、データが key- を持つオブジェクトでラップされている場合に、JSON データをマップに部分的にアンマーシャルすることができます。値のペア。これにより、各キーが保持する値のタイプを簡単に識別できます。
これを実現するには、encoding/json パッケージを使用し、map[string]json.RawMessage にアンマーシャルします。 json.RawMessage タイプは、さらに解析する前に、基礎となる JSON データをキャプチャします。
var objmap map[string]json.RawMessage err := json.Unmarshal(data, &objmap)
マップを取得したら、そのマップに従って各キーの値の解析に進むことができます。既知のタイプ。
たとえばJSON:
{ "sendMsg":{"user":"ANisus","msg":"Trying to send a message"}, "say":"Hello" }
sendMsg を解析して次のように言うことができます:
type sendMsg struct { User string Msg string } var s sendMsg err = json.Unmarshal(objmap["sendMsg"], &s) 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 サイトの他の関連記事を参照してください。