我正在开发一个 API 客户端,我需要根据请求对 JSON 有效负载进行编码,并从响应中解码 JSON 正文。
我已经阅读了几个库的源代码,从我所看到的,我基本上有两种编码和解码 JSON 字符串的可能性。
使用json.Unmarshal传递整个响应字符串
data, err := ioutil.ReadAll(resp.Body)
if err == nil && data != nil {
err = json.Unmarshal(data, value)
}
或使用 json.NewDecoder.Decode
err = json.NewDecoder(resp.Body).Decode(value)
就我而言,在处理实现 的 HTTP 响应时,io.Reader第二个版本似乎需要较少的代码,但由于我已经看过两者,我想知道是否应该使用解决方案而不是其他解决方案有任何偏好。
此外,这个问题的公认答案说
请使用json.Decoder代替json.Unmarshal。
但它没有提到原因。我真的应该避免使用json.Unmarshal吗?
婷婷同学_
相关分类