首页  >  文章  >  后端开发  >  如何在 Go 中解析 JSON HTTP 响应中的'ip”字段?

如何在 Go 中解析 JSON HTTP 响应中的'ip”字段?

Linda Hamilton
Linda Hamilton原创
2024-11-27 12:59:13336浏览

How to Parse an

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn