ホームページ >バックエンド開発 >Golang >Go でさまざまな応答形式を持つ JSON をアンマーシャリングする方法

Go でさまざまな応答形式を持つ JSON をアンマーシャリングする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 10:00:30838ブラウズ

How to Unmarshal JSON with Varying Response Formats in Go?

Go でのさまざまな応答形式を持つ JSON のアンマーシャリング

外部エンドポイントを使用する場合、異なる形式の JSON 応答が発生する可能性があります。これらのバリエーションの処理は、特に応答を特定のデータ型に構造化したい場合に困難になる可能性があります。

ジレンマ

JSON を返すエンドポイントに直面しています。 2 つの形式:

  • 形式 1: { "message": "Message" }
  • 形式 2: { "message": ["ERROR_CODE"] }

課題は、両方の応答形式に対応できる 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。