アンマーシャリング時に Go で複数の JSON 形式をどのように処理しますか?

DDD
リリース: 2024-10-26 12:30:03
オリジナル
198 人が閲覧しました

How Do You Handle Multiple JSON Formats in Go When Unmarshaling?

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

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