在 Go 中解析 JSON HTTP 响应
在本文中,我们将解决一个常见的编码挑战:在 Go 中解析来自 HTTP 请求的 JSON 响应Go 编程语言。我们将通过一个示例来帮助您破译响应并提取特定值,例如“ip”字段。
以以下curl 输出为例:
{ "type":"example", "data":{ "name":"abc", "labels":{ "key":"value" } }, "subsets":[ { "addresses":[ { "ip":"192.168.103.178" } ], "ports":[ { "port":80 } ] } ] }
我们的目标是从此响应中检索“ip”字段的值。
基于结构的 JSON解码
为了解码 JSON 响应,我们将创建镜像 JSON 结构的结构。 Go 中的结构体充当我们数据的模板,定义其形状和字段。
以下示例代码演示了基于结构体的 JSON 解码:
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) } } }
解码特定密钥
在上面的代码中,我们使用一个名为 Example 的结构来匹配 JSON 响应的结构。使用解码器,我们可以将响应解码为示例结构。
为了提取“ip”值,我们访问地址切片,它是地址结构的切片。每个 Address 结构体都包含“ip”字段,允许我们打印它的值。
通过以下步骤,您可以在 Go 中有效解析 JSON HTTP 响应并检索特定的数据值,例如中的“ip”字段这个例子。始终记住创建与 JSON 结构匹配的结构,并使用解码器用响应数据填充它们。
以上是如何在 Go 中解析 JSON HTTP 响应中的'ip”字段?的详细内容。更多信息请关注PHP中文网其他相关文章!