这个一直有效。
_, err = io.Copy(out, resp.Body)
if err != nil {
ErrLog.Fatal(err)
}
]对于大型响应 (MB) ,这个错误非常一致(下载内容的最后一个字节被忽略,在我的情况下是 json 响应中的关闭)。
if _, err := io.Copy(out, resp.Body); err != nil {
ErrLog.Fatal(err)
}
从golang 官方博客上的示例来看,这应该是有效的语法。
编辑:更多细节和上下文
这是我在第二版代码中得到的错误(更紧凑的错误处理)
ERROR: 2015/08/05 08:09:31 pull.go:257: unexpected end of JSON input
来自另一个函数中的这段代码
err = json.Unmarshal(dat, &all_data)
if err != nil {
return err
}
通过在每种情况下查看文件的前 10 个和最后 10 个字符,我发现了一个问题。以下是前后对比:
# Before (with error)
START: [{"tags":[ END: ersion":1}
START: [{"_create END: "tags":[]}
# After
START: [{"tags":[ END: rsion":1}]
START: [{"_create END: tags":[]}]
这些文件是 15-20 Mb json 字符串。
繁华开满天机
相关分类