Go的错误处理记录

json.Unmarshal #

invalid character '\x1f' looking for beginning of value #

网络请求返回的结果是被gzip压缩过的,直接用ioutil.ReadAll读取res.Body的话拿到的是乱码,用 json.Unmarshal 解析的话会报错:

invalid character '\x1f' looking for beginning of value

gzip.NewReader解码一次,可以解决此问题。

1
2
3
4
5
6
7
8
9
func d() {
	client := &http.Client{}
	req, err := http.NewRequest(t.Method, t.Url, strings.NewReader(t.Body))
    res, err := client.Do(req)
    // gzip
	ungzipbody, err := gzip.NewReader(res.Body)
	body, err := ioutil.ReadAll(ungzipbody)
	err = json.Unmarshal(body, c)
}

不知道是不是因为响应头中没有Content-Encoding: gzip