如何使用goreq将json转换为struct?

时间:2017-09-19 19:55:43

标签: json rest go struct

使用Go我试图从我正在使用goreq library的服务器获取一些json。当我按如下方式打印出结果字符串时:

s, _ := res.Body.ToString()
fmt.Println(s)

我得到一个正确的json字符串:

{"success":true,"testnet":false,"message":"","result":{"btc":4014.16,"edp":4014.16},"msIn":1505820331492,"msOut":1505820331492}

因此,使用this json-to-go webservice我将此json消息转换为结构:

type Index struct {
    Success bool   `json:"success"`
    Testnet bool   `json:"testnet"`
    Message string `json:"message"`
    Result  struct {
        Btc float64 `json:"btc"`
        Edp float64 `json:"edp"`
    } `json:"result"`
    MsIn  int64 `json:"msIn"`
    MsOut int64 `json:"msOut"`
}

我使用如下(implementation of FromJsonTo() here):

var item Index
res.Body.FromJsonTo(&item)
fmt.Println(item)

这只是打印出空的Index结构(虽然json str仍然是相同的):

{false false  {0 0} 0 0}

知道我在这里做错了什么吗?

1 个答案:

答案 0 :(得分:2)

通过致电res.Body.ToString(),您可以阅读整个回复内容。接下来,当您调用res.Body.FromJsonTo()时,正文为空,因此会返回EOF错误。从代码中删除ToString()会有所帮助。