我目前正在將 API 回應拉入結構中。
我可以正常回答說:
[
{"date":"2021-10-04","user":"Test","url":"Anonymous"]},
{"date":"2021-10-04","user":"Test","url":"Anonymous"]},
{"date":"2021-10-04","user":"Test","url":"Anonymous"]},
]
但是,當我得到這樣的資料時:
"urls": [
{"date":"2021-10-04","user":"Test","url":"Anonymous"]},
{"date":"2021-10-04","user":"Test","url":"Anonymous"]},
{"date":"2021-10-04","user":"Test","url":"Anonymous"]},
]
我似乎無法將其決議為結構。
這似乎是一個愚蠢的問題,因為它基本相同。
這是我正在做的事情:
type urls struct {
Urls struct {
Date string `json:"date"`
User string `json:"user"`
Urls string `json:"urls"`
} `json:"urls"`
}
type url []urls
并在函式內:
resp, err := http.Get("https://url")
if err != nil {
fmt.Println("No response from request")
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) // response body is []byte
var u url
_ = json.Unmarshal(body, &u)
不幸的是,這不起作用,你是空的。
有了第一個回應,我可以有一個這樣的結構,它作業正常:
type urls struct {
Date string `json:"date"`
User string `json:"user"`
Urls string `json:"urls"`
}
uj5u.com熱心網友回復:
我想我想說的是上面的結合,再加上我的一點經驗。
- 您的 Urls 欄位是 JSON 中的陣列,但不在您宣告的結構中。
- 您不應忽略 json.Unmarshal(body, &u) 回傳的錯誤。
- 您發布的 Json 在語法上不正確。我稍微修改了你的 Json 字串,它可能是:
{
"urls": [
{"date":"2021-10-04","user":"Test","url":"Anonymous"},
{"date":"2021-10-04","user":"Test","url":"Anonymous"},
{"date":"2021-10-04","user":"Test","url":"Anonymous"}
]
}
而去結構應該是:
type URL struct {
SubURLs []struct {
Date string `json:"date"`
User string `json:"user"`
URL string `json:"url"`
} `json:"urls"`
}
接下來給大家介紹一種處理 JSON to Go structs 的可能方式:你可以把你的 Json 粘貼到這個網站上,然后就可以得到它對應的 Go 結構體,順便也可以修正你的 Json。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/493428.html