ホームページ > バックエンド開発 > Golang > Go 構造体で任意の JSON キーを処理するにはどうすればよいですか?

Go 構造体で任意の JSON キーを処理するにはどうすればよいですか?

DDD
リリース: 2024-11-26 16:04:10
オリジナル
1003 人が閲覧しました

How to Handle Arbitrary JSON Keys in Go Structs?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート