您可以创建结构来模仿json结构,然后对json进行解码。
package mainimport ( "bytes" "encoding/json" "fmt" "log")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() { m := []byte(`{"type":"example","data": {"name": "abc","labels": {"key": "value"}},"subsets": [{"addresses": [{"ip": "192.168.103.178"}],"ports": [{"port": 80}]}]}`) r := bytes.NewReader(m) deprer := json.NewDeprer(r) val := &Example{} err := deprer.Depre(val) if err != nil { log.Fatal(err) } // If you want to read a response body // deprer := json.NewDeprer(res.Body) // err := deprer.Depre(val) // Subsets is a slice so you must loop over it for _, s := range val.Subsets { // within Subsets, address is also a slice // then you can access each IP from type Address for _, a := range s.Addresses { fmt.Println(a.IP) } }}输出为:
192.168.103.178
通过将其解码为一个结构,您可以循环遍历任何切片,而不会局限于一个IP
这里的例子:
https://play.golang.org/p/sWA9qBWljA



