Home > Backend Development > Golang > How to Handle Arbitrary JSON Keys in Go Structs?

How to Handle Arbitrary JSON Keys in Go Structs?

DDD
Release: 2024-11-26 16:04:10
Original
1001 people have browsed it

How to Handle Arbitrary JSON Keys in Go Structs?

Handling Arbitrary JSON Keys in Go Structs

Your JSON response contains varying keys that cannot be defined statically in a Go struct. To address this, consider using a map data structure that allows for dynamic key-value pairs.

Using a Map for Dynamic Keys

The following code defines a struct that uses a map to represent the arbitrary key-value pairs:

type Items map[string][]ImageUrl
Copy after login

Here, Items is a map that maps strings (the keys in the JSON) to slices of ImageUrl structs. Each ImageUrl struct represents a single image URL with its dimensions.

Sample Usage

This modified version of your code illustrates how to use the Items struct:

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
}
Copy after login

In this example, the json.Unmarshal function will automatically populate the Items map with the appropriate key-value pairs. You can then access and manipulate the data as needed.

Note: This approach assumes that the nested keys in your JSON are consistent. If that's not the case, you may need to employ more complex data structures, such as nested maps or slices of maps.

The above is the detailed content of How to Handle Arbitrary JSON Keys in Go Structs?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template