ホームページ  >  記事  >  バックエンド開発  >  Go はアンマーシャリング中に動的 JSON フィールド タイプをどのように処理できますか?

Go はアンマーシャリング中に動的 JSON フィールド タイプをどのように処理できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-24 00:54:09213ブラウズ

How Can Go Handle Dynamic JSON Field Types During Unmarshaling?

Go での動的 JSON フィールド タイプの処理

Go で JSON を構造体にアンマーシャリングするときに、オブジェクトの値の型で不一致が発生する可能性があります。 API リクエスト全体にわたる特定のキー。この問題は、サーバーが同じキーに対して異なるオブジェクト構造または文字列参照を送信するときに発生します。 Go ではアンマーシャリングに固定構造が必要なため、これによって問題が生じる可能性があります。

この問題に対処するには、インターフェイス型を使用した型動的アプローチを採用できます。次の JSON データについて考えてみましょう。

{
  "mykey": [
    {obj1}, 
    {obj2}
  ]
}

この動的な性質を把握するには、次のように構造体を定義できます。

type Data struct {
    MyKey []interface{} `json:"mykey"`
}

次のような文字列値を含む JSON が見つかった場合:

{
  "mykey": [
    "/obj1/is/at/this/path", 
    "/obj2/is/at/this/other/path"
  ]
}

MyKey スライス要素は文字列としてデコードされます。オブジェクトの場合、map[string]interface{} 値としてデコードされます。この区別は、型スイッチを使用して行うことができます。

for i, v := range data.MyKey {
    switch x := v.(type) {
    case string:
        fmt.Println("Got a string: ", x)
    case map[string]interface{}:
        fmt.Printf("Got an object: %#v\n", x)
    }
}

JSON をインターフェイス型にアンマーシャリングし、型スイッチを使用することにより、Go 開発者は、提供された構造に関係なく、動的フィールド型を処理し、データを適切に解析できます。サーバーによって。

以上がGo はアンマーシャリング中に動的 JSON フィールド タイプをどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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