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