Go 構造体での任意の JSON キーの処理
JSON 応答には、Go 構造体で静的に定義できないさまざまなキーが含まれています。これに対処するには、動的なキーと値のペアを許可するマップ データ構造の使用を検討してください。
動的キーのマップの使用
次のコードは、次の構造体を定義します。マップを使用して、任意のキーと値のペアを表します:
type Items map[string][]ImageUrl
ここで、Items はマップするマップです。文字列 (JSON 内のキー) を ImageUrl 構造体のスライスに変換します。各 ImageUrl 構造体は、単一の画像 URL とその寸法を表します。
使用例
このコードの変更バージョンは、Items 構造体の使用方法を示しています。
type ImageUrl struct { Url string Width, Height int } type Items map[string][]ImageUrl func main() { json := `{"items": [{"name": "thing", "image_urls": { "50x100": [{ "url": "http://site.com/images/1/50x100.jpg", "width": 50, "height": 100 }, { "url": "http://site.com/images/2/50x100.jpg", "width": 50, "height": 100 }], "200x300": [{ "url": "http://site.com/images/1/200x300.jpg", "width": 200, "height": 300 }], "400x520": [{ "url": "http://site.com/images/1/400x520.jpg", "width": 400, "height": 520 }] } } }` var items Items if err := json.Unmarshal([]byte(json), &items); err != nil { // Handle error } fmt.Println(items) // Prints the map containing the keys and values }
この例では、json.Unmarshal 関数により、Items マップに適切なキーと値が自動的に設定されます。ペア。その後、必要に応じてデータにアクセスして操作できます。
注: このアプローチでは、JSON 内のネストされたキーが一貫していることを前提としています。そうでない場合は、ネストされたマップやマップのスライスなど、より複雑なデータ構造を採用する必要がある場合があります。
以上がGo 構造体で任意の JSON キーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。