ホームページ > バックエンド開発 > Golang > JSON エンコード文字列が埋め込まれた JSON をデコードするにはどうすればよいですか?

JSON エンコード文字列が埋め込まれた JSON をデコードするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-16 09:59:11
オリジナル
167 人が閲覧しました

How to Decode JSON with Embedded JSON-Encoded Strings?

埋め込み JSON エンコード文字列を使用した JSON のデコード

外部 API からの複雑な JSON 応答を解析するコンテキストでは、次のような問題が発生します。 JSON オブジェクト内に JSON エンコードされた文字列が存在すること。 JSON 構造には、HTML 文字列を含む「text」と呼ばれるフィールドが含まれています。カスタム タイプを使用してこの JSON をデコードしようとすると、エラーが発生します。

この問題に対処するには、2 段階のデコード プロセスが必要です。

  1. メインの JSON 構造を解析する「args」フィールドを文字列のスライスとして含む簡略化された型に変換します。
  2. 「args」内の各文字列をデコードします。 「テキスト」フィールドに対応するカスタム タイプを使用して、新しい JSON オブジェクトとしてスライスします。
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"`
}
ログイン後にコピー

提供された JSON 文字列をデコードする例:

str := `{"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}}"]}`

var m main
if err := json.Unmarshal([]byte(str), &amp;m); err != nil {
    log.Fatal(err)
}

var args arg
if err := json.Unmarshal([]byte(m.Args[0]), &amp;args); err != nil {
    log.Fatal(err)
}
ログイン後にコピー

外側の JSON オブジェクトと埋め込まれた JSON 文字列をデコードすると、ネストされた JSON 構造を正しく処理できるようになり、無効な文字が解決されます。エラー。

以上がJSON エンコード文字列が埋め込まれた JSON をデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート