0
我已經JSON以下JSON數組散列:如何解析JSON哈希的JSON陣列中GOLANG
[
{
"name": "XXXX",
"address": "XXXX",
"keepalive": {
"thresholds": {
"warning": 30,
"critical": 100
},
"handlers": [
"XXXXX"
],
"refresh": 180
},
"subscriptions": [
"XXXX",
"XXXX",
"XXXX"
],
"version": "0.17.1",
"timestamp": 1486413490
},
{...},
{...},
...
]
和AM解析陣列作爲以下:
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)
}
問題:變量s ,包含所有數組。所以我怎麼可以讓所有數組的名稱值?我應該做的循環,並得到我需要的價值?這是最好的方法嗎?
不能s範圍(類型* ClientResponse) –
Ahhh,您創建了一個命名的切片類型。但是,應該能夠覆蓋'* s'。順便提一下,指向切片的指針幾乎不會有用,因爲切片本身只是3個字的結構,所以您只能保存2個字的數據以換取額外的間接層。 – Kaedys
好像現在好了,謝謝..這種陣列的最佳方法是什麼?我的意思是你說「指向切片的指針幾乎沒有用」我這樣做是因爲我得到的錯誤:無法將數組解碼爲main類型的Go值.Client –