Maison >développement back-end >Golang >Comment gérer les clés JSON arbitraires dans Go Structs ?

Comment gérer les clés JSON arbitraires dans Go Structs ?

DDD
DDDoriginal
2024-11-26 16:04:101038parcourir

How to Handle Arbitrary JSON Keys in Go Structs?

Gestion des clés JSON arbitraires dans les structures Go

Votre réponse JSON contient différentes clés qui ne peuvent pas être définies de manière statique dans une structure Go. Pour résoudre ce problème, envisagez d'utiliser une structure de données cartographiques qui permet des paires clé-valeur dynamiques.

Utilisation d'une carte pour les clés dynamiques

Le code suivant définit une structure qui utilise une carte pour représenter les paires clé-valeur arbitraires :

type Items map[string][]ImageUrl

Ici, Items est une carte qui mappe les chaînes (les clés dans le JSON) aux tranches de structures ImageUrl. Chaque structure ImageUrl représente une URL d'image unique avec ses dimensions.

Exemple d'utilisation

Cette version modifiée de votre code illustre comment utiliser la structure 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
}

Dans cet exemple, la fonction json.Unmarshal remplira automatiquement la carte Items avec les paires clé-valeur appropriées. Vous pouvez ensuite accéder aux données et les manipuler selon vos besoins.

Remarque : Cette approche suppose que les clés imbriquées dans votre JSON sont cohérentes. Si ce n'est pas le cas, vous devrez peut-être utiliser des structures de données plus complexes, telles que des cartes imbriquées ou des tranches de cartes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn