Go でのさまざまな応答形式を持つ JSON のアンマーシャリング
外部エンドポイントを使用する場合、異なる形式の JSON 応答が発生する可能性があります。これらのバリエーションの処理は、特に応答を特定のデータ型に構造化したい場合に困難になる可能性があります。
ジレンマ
JSON を返すエンドポイントに直面しています。 2 つの形式:
課題は、両方の応答形式に対応できる Go 構造体を作成することです。
シンプルなアプローチ
最初は、2 つの別々の構造体を使用することを検討しました。フォーマットごとに。ただし、このアプローチは複数のデコード試行とエラー処理が必要なため理想的ではありません。
より洗練されたソリューション
より洗練されたソリューションには、JSON をインターフェースにアンマーシャリングすることが含まれます。 {} タイプ。 Interface{} は、特定の型に関係なく、任意の値を保持できる Go の特別な型です。
<code class="go">type Response struct { Message interface{} `json:"message"` }</code>
アンマーシャリングされると、型アサーションまたは型スイッチを使用して、Message フィールドの型を検査できます。 .
<code class="go">switch x := r.Message.(type) { case string: // Handle string message case []interface{}: // Handle array message default: // Handle unexpected type }</code>
このアプローチにより、単一の構造体内で両方の応答形式を処理できるようになり、より堅牢で保守可能なソリューションが提供されます。
以上がGo でさまざまな応答形式を持つ JSON をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。