相关疑难解决方法(0)

使用json.Unmarshal vs json.NewDecoder.Decode解码Golang中的JSON

我正在开发一个API客户端,我需要根据请求对JSON有效负载进行编码,并从响应中解码JSON主体.

我已经阅读了几个库的源代码,从我看到的,我基本上有两种编码和解码JSON字符串的可能性.

使用json.Unmarshal传递整个响应字符串

data, err := ioutil.ReadAll(resp.Body)
if err == nil && data != nil {
    err = json.Unmarshal(data, value)
}
Run Code Online (Sandbox Code Playgroud)

或使用 json.NewDecoder.Decode

err = json.NewDecoder(resp.Body).Decode(value)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,当处理实现的HTTP响应时,io.Reader第二个版本似乎需要更少的代码,但是因为我已经看到两者我想知道是否有任何偏好我是否应该使用解决方案而不是另一个.

此外,从这个问题接受的答案

请使用json.Decoder而不是json.Unmarshal.

但它没有提到原因.我真的应该避免使用json.Unmarshal吗?

json go

174
推荐指数
2
解决办法
5万
查看次数

标签 统计

go ×1

json ×1