Go でアンマーシャリングを使用した複数の JSON 形式の処理
異なる形式で JSON を返すサードパーティ API を使用する場合、困難になる可能性がありますGo のさまざまな構造を処理します。よくある課題の 1 つは、「メッセージ」フィールドに文字列または配列を含む応答を処理することです。
簡単なアプローチ
基本的なアプローチには、形式ごとに個別の構造体:
<code class="go">type ResponseWithString struct { Message string `json:"message"` } type ResponseWithArray struct { Message []string `json:"message"` }</code>
その後、JSON を両方の構造体に連続してデコードしてみることができます。最初の試行 (文字列を使用) が失敗した場合は、2 回目の試行 (配列を使用) を試行します。
より洗練された解決策
より洗練されたアプローチは、次のとおりです。任意のタイプの値を保持できるインターフェース タイプ。{} JSON をインターフェイス{} 型の変数にアンマーシャリングすることで、その型を動的にチェックし、それに応じて応答できます。
<code class="go">type Response struct { Message interface{} `json:"message"` } func main() { ... var r Response ... switch x := r.Message.(type) { case string: // Handle string message case []interface{}: // Handle array message } }</code>
デフォルトでは、JSON 配列は []interface{} にアンマーシャリングされることに注意してください。型アサーションを使用して文字列と配列を区別できます。
このアプローチでは、単一の構造体で複数の JSON 形式を処理できるため、柔軟性とコードの再利用性が向上します。
以上がアンマーシャリング時に Go で複数の JSON 形式をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。