仅从Golang API数据值中获取所需的值



我正在使用Golang制作一个不和机器人。但是,我试图通过调用API只获得所需的数据值,但是发生了一个错误。API格式为{"id":";name":";level":0…}。我想要得到level和id的值

req, err := http.NewRequest("GET", "https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/"+a, nil)
if err != nil {
panic(err)
}
req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36")
req.Header.Add("Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja-JP;q=0.6,ja;q=0.5")
req.Header.Add("Origin", "https://developer.riotgames.com")
req.Header.Add("X-Riot-Token", "RGAPI-195db001-c13f-4412-a9ee-bda6e13baa48")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
bytes, _ := ioutil.ReadAll(resp.Body)
str := string(bytes)
fmt.Println(str)
return str

尝试构建一个包含预期字段的结构体,并尝试将响应与结构体绑定。

检查这里:其他堆栈溢出绑定主题

type myStruct struct {
Id    string `json:"id"`
Level string `json:"level"`
}
func foo () myStruct{
var ms myStruct
req, err := http.NewRequest("GET", "https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/", nil)
if err != nil {
log.Printf("error: %s", err)
}
req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36")
req.Header.Add("Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja-JP;q=0.6,ja;q=0.5")
req.Header.Add("Origin", "https://developer.riotgames.com")
req.Header.Add("X-Riot-Token", "RGAPI-195db001-c13f-4412-a9ee-bda6e13baa48")
var client http.Client
resp, err := client.Do(req)
if err != nil {
log.Printf("error: %s", err)
}
defer resp.Body.Close()
json.NewDecoder(resp.Body).Decode(&ms)
return ms
}

不能正确测试,因为得到403。此外,这将是很好的检查响应状态代码。而且恐慌也不是处理错误的最佳方式。您尝试访问的服务器可能已关闭。

最新更新