[英]How to parse JSON Array of JSON Hashes in GOLANG
i have the following json array of json hashes : 我有以下json哈希值的json数组:
[
{
"name": "XXXX",
"address": "XXXX",
"keepalive": {
"thresholds": {
"warning": 30,
"critical": 100
},
"handlers": [
"XXXXX"
],
"refresh": 180
},
"subscriptions": [
"XXXX",
"XXXX",
"XXXX"
],
"version": "0.17.1",
"timestamp": 1486413490
},
{...},
{...},
...
]
And am parsing the array as the following : 并解析数组如下:
type Client struct {
Name string `json:"name"`
Address string `json:"address"`
PublicDNS string `json:"publicDNS"`
keepalive [] string `json:"keepalive"`
Subscriptions [] string `json:"subscriptions"`
Version string `json:"version"`
Timestamp int64 `json:"timestamp"`
}
type ClientResponse []Client
func getClients(body []byte) (*ClientResponse, error) {
var s = new(ClientResponse)
err := json.Unmarshal(body, &s)
if(err != nil){
fmt.Println("whoops:", err)
}
return s, err
}
func main() {
res,err := http.Get("http://xxxxx:4567/clients")
if err != nil{
panic(err.Error())
}
body,err := ioutil.ReadAll(res.Body)
if err != nil{
panic(err.Error())
}
s, err := getClients([]byte(body))
fmt.Println(s)
}
Problem : variable s , contain all arrays . 问题:变量s包含所有数组。 so how can i get lets say name value for all arrays ? 那么我怎样才能让所有数组说出名称值呢? should i do for loop and get values i need ? 我应该做循环并获取所需的值吗? is this the best approach ? 这是最好的方法吗?
You'll have to loop over them. 您将不得不遍历它们。
names := make([]string, len(*s))
for i := range *s {
names[i] = (*s)[i].Name
}
Incidentally, your structure for unmarshalling is incorrect. 顺便说一下,您的解组结构不正确。 keepalive
isn't exported, so it won't be unmarshalled, and even if it were, it's defined as a slice of strings, while the keepalive
field in the JSON is an object with thresholds
, handlers
, and refresh
fields keepalive
不会被导出,因此也不会被解组,即使它被定义为字符串的一部分,而JSON中的keepalive
字段是带有thresholds
, handlers
和refresh
字段的对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.