Parsing JSON HTTP Responses in Go
In this article, we'll address a common coding challenge: parsing JSON responses from HTTP requests in the Go programming language. We'll walk through an example to help you decipher the response and extract specific values, such as the "ip" field.
Consider the following curl output as an example:
{ "type":"example", "data":{ "name":"abc", "labels":{ "key":"value" } }, "subsets":[ { "addresses":[ { "ip":"192.168.103.178" } ], "ports":[ { "port":80 } ] } ] }
Our goal is to retrieve the value of the "ip" field from this response.
Struct-Based JSON Decoding
To decode the JSON response, we'll create structs that mirror the JSON structure. Structs in Go serve as templates for our data, defining their shape and fields.
Here's a sample code that demonstrates struct-based JSON decoding:
type Example struct { Type string `json:"type,omitempty"` Subsets []Subset `json:"subsets,omitempty"` } type Subset struct { Addresses []Address `json:"addresses,omitempty"` } type Address struct { IP string `json:"IP,omitempty"` } func main() { jsonResponse := `{ "type": "example", "data": { "name": "abc", "labels": { "key": "value" } }, "subsets": [ { "addresses": [ { "ip": "192.168.103.178" } ], "ports": [ { "port": 80 } ] } ] }` r := bytes.NewReader([]byte(jsonResponse)) decoder := json.NewDecoder(r) val := &Example{} err := decoder.Decode(val) if err != nil { log.Fatal(err) } for _, s := range val.Subsets { for _, a := range s.Addresses { fmt.Println(a.IP) } } }
Decoding a Specific Key
In the code above, we're using a struct called Example to match the structure of the JSON response. Using the decoder, we're then able to decode the response into our Example struct.
To extract the "ip" value, we access the Addresses slice, which is a slice of Address structs. Each Address struct contains the "ip" field, allowing us to print its value.
By following these steps, you can effectively parse JSON HTTP responses in Go and retrieve specific data values, like the "ip" field in this example. Always remember to create structs that match the JSON structure and use a decoder to populate them with the response data.
The above is the detailed content of How to Parse an \'ip\' Field from a JSON HTTP Response in Go?. For more information, please follow other related articles on the PHP Chinese website!