作为一个Go的新手,我很难确定问题所在,但希望提供一些事实能够帮到您。
我正在使用返回其“Content-Encoding”为gzip的API。我已经编写了以下内容来对我的响应结构进行编码:
我已经为了简洁起见删除了错误处理,但感兴趣的重点是,如果我取消stdout的打印注释,我会得到预期的结果。然而,解码并没有给我我所期望的结果。有什么指针吗?是不是结构必须完全映射到响应?
以下是完整示例: https://play.golang.org/p/4eCuXxXm3T
我正在使用返回其“Content-Encoding”为gzip的API。我已经编写了以下内容来对我的响应结构进行编码:
reader, err = gzip.NewReader(resp.Body)
defer reader.Close()
// print to standard out
//_, err = io.Copy(os.Stdout, reader)
//if err != nil {
// log.Fatal(err)
//}
// Decode the response into our tescoResponse struct
var response TescoResponse
err := json.NewDecoder(reader).Decode(&response)
我已经为了简洁起见删除了错误处理,但感兴趣的重点是,如果我取消stdout的打印注释,我会得到预期的结果。然而,解码并没有给我我所期望的结果。有什么指针吗?是不是结构必须完全映射到响应?
以下是完整示例: https://play.golang.org/p/4eCuXxXm3T
http
包会自动解码 gzip 响应。你从resp.Body
得到的是未压缩的响应。不需要手动解码。可以像这样解码:json.NewDecoder(resp.Body).Decode(&response)
。 - icza[NewDecoder]: invalid character '\x1f' looking for beginning of value
。 - SionContent-Encoding: gzip
头,则net/http
包将自动为您解码。请检查是否存在该头。 - icza