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