Go での動的な JSON フィールド タイプの処理
キーの値の型が変化し続ける場合、Go で JSON を構造化データに逆シリアル化するのは困難になる場合があります。たとえば、API は次のようなさまざまな形式でデータを提供する場合があります。
{ "mykey": [ {obj1}, {obj2} ] }
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Go のアプローチ
このような動的 JSON を処理するには、次のような柔軟なデータ構造:
type Data struct { MyKey []interface{} `json:"mykey"` }
この構造により、文字列とオブジェクトの両方を MyKey スライスに保存できます。
タイプの識別
JSON が逆シリアル化されたら、タイプ スイッチを使用して文字列とオブジェクトを区別できます。
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) } }
このアプローチにより、MyKey スライス内の各要素のタイプを判断し、それに応じて処理できます。
以上がGo で動的 JSON フィールド タイプを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。