In the realm of JSON parsing, sometimes one encounters the challenge of dynamic keys at the top level of a JSON string. Suppose we have the following JSON:
j := `{"bvu62fu6dq": { "name": "john", "age": 23, "xyz": "weu33s" ..... .....} }`
The task is to extract the values for "name" and "age" from this JSON, but the key "bvu62fu6dq" is dynamic and varies from case to case.
One approach is to define a struct that accommodates this dynamic key structure:
type Info struct { UniqueID map[string]string }
However, this structure faces challenges in handling the actual extraction of "name" and "age."
To effectively parse such dynamic JSON structures, we can leverage the power of the "encoding/json" package in Golang. Here's a solution:
type Person struct { Name string `json:"name"` Age int `json:"age"` } type Info map[string]Person
This setup employs a more flexible approach by using a map keyed by the dynamic top-level key (e.g., "bvu62fu6dq"). The "Person" struct encapsulates the data we seek to extract from each dynamic sub-object (e.g., "name" and "age").
With this setup, decoding the JSON and extracting the specific values becomes straightforward:
var info Info err := json.Unmarshal([]byte(j), &info) if err != nil { // Handle error } fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)
This comprehensive solution not only handles dynamic top-level JSON keys but also supports the extraction of specific fields (e.g., "name" and "age") from each sub-object.
The above is the detailed content of How to Parse Dynamic JSON Keys and Extract Specific Fields in Go?. For more information, please follow other related articles on the PHP Chinese website!