JSON エンコードされた文字列を含む JSON のデコード
外部ソースから JSON データを受信する場合、エンコードされた JSON 文字列を含む JSON が発生するのが一般的です。このシナリオを処理するには、2 段階のデコード プロセスが必要です。
次の JSON について考えます。
{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"<a href=\"https://play.spotify.com/browse\" target=\"_blank\">https://play.spotify.com/browse</a>\",\"time\":1455397119}}"]}
これを適切にデコードするには、次の構造を定義します。
type main struct { Name string `json:"name"` Args []string `json:"args"` } type arg struct { Method string `json:"method"` Params par `json:"params"` } type par struct { Channel string `json:"channel,omitempty"` Name string `json:"name,omitempty"` NameColor string `json:"nameColor,omitempty"` Text string `json:"text,omitempty"` Time int64 `json:"time,omitempty"` }
最初のステップは、最も外側のレイヤーをデコードすることです:
var m main if err := json.Unmarshal([]byte(str), &m); err != nil { log.Fatal(err) }
次に、 「args」配列内の JSON エンコードされた文字列:
var args arg if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil { log.Fatal(err) }
この 2 段階のアプローチを使用すると、アプリケーションは最も外側の JSON 文字列と埋め込まれた JSON 文字列の両方を正しく解析できます。
以上がJSON エンコードされた文字列を含む JSON データをデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。