在Golang中,json解码器返回一个空结构但ioutil.ReadAll显示该消息

时间:2017-06-24 03:39:24

标签: go

响应结构如下:

type Response struct {
    Message string `json:"message"`
}

代码如下:

body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("response Body:", string(body))

response := &Response{}
json.NewDecoder(resp.Body).Decode(response)
fmt.Println("response struct:", response)

输出如下:

response Body: {"Message":"success"}

response struct: &{}

正如我们所看到的,响应体字符串很好并且包含json strin。但是当我尝试将响应体解码为json时,我得到一个空结构。

我已经在结构中导出了Message字段,以便json包可以访问它。我还在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

如果您在JSON resp.Body之前阅读了Decode,那么它就没有要解码的输入。

仅限尝试 -

response := &Response{}
json.NewDecoder(resp.Body).Decode(response)
fmt.Println("response struct:", response)

答案 1 :(得分:0)

Go语言可以更灵活地使用JSON文档。在下面的示例中,您可以将JSON文档解码或解组为map变量。 json包的Unmarshal函数用于将JSON值解码为Go值。 Please refer the link which may also help you.