golang使用josn.Unmarshal报错:unexpected end of JSON input

在Go语言中遇到使用json.Unmarshal解析HTTP响应JSON数据时,出现'unexpected end of JSON input'错误。错误通常由于不完整的JSON数据引起。解决方案包括在解析前检查数据,或替换读取响应主体的方法。

在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)

这样也可能解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值