在go语言中使用Unmarshal()解析来自HTTP响应的JSON数据报错:unexpected end of JSON input问题一般是分为以下情况:
当我们在通过http协议访问并读取数据时

}
body, err := ioutil.ReadAll(resp.Body)
err = json.Unmarshal(body, &resDatas)
使用这种Unmarshal()方式进行解析数据,但是报上述错误,
这是因为 json.Unmarshal() 的第一个参数为[]byte的时候,json包会认为这不是一个正确的json包,因此会报错unexpected end of JSON input
解决办法(1): 在使用json.Unmarshal时候,我们先对body进行判断,再进行解析。
if len(body) == 0{
return nil
}
解决办法(2):换掉ioutil.ReadAll()方式,直接从响应主体读取
err := json.NewDecoder(resp.Body).Decode(&resDatas)
这样也可能解决。
在Go语言中遇到使用json.Unmarshal解析HTTP响应JSON数据时,出现'unexpected end of JSON input'错误。错误通常由于不完整的JSON数据引起。解决方案包括在解析前检查数据,或替换读取响应主体的方法。


2万+

被折叠的 条评论
为什么被折叠?



