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

Linda Hamilton
リリース: 2024-10-27 10:00:30
オリジナル
670 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!