您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何从http.Get获取JSON响应

如何从http.Get获取JSON响应

理想的方法 不是 使用IoUtil.ReadAll,而是直接在阅读器上使用解码器。这是一个不错的函数,它获取url并将其响应解码到target结构上。

var myClient = &http.Client{Timeout: 10 * time.Second}

func getJson(url string, target interface{}) error {
    r, err := myClient.Get(url)
    if err != nil {
        return err
    }
    defer r.Body.Close()

    return json.NewDecoder(r.Body).Decode(target)
}

使用示例:

type Foo struct {
    Bar string
}

func main() {
    foo1 := new(Foo) // or &Foo{}
    getJson("http://example.com", foo1)
    println(foo1.Bar)

    // alternately:

    foo2 := Foo{}
    getJson("http://example.com", &foo2)
    println(foo2.Bar)
}

您不应该*http.Client在生产中使用认结构,如最初回答的那样!(http.Get/ etc调用的是哪个)。原因是认客户端没有设置超时。如果远程服务器无响应,那将是糟糕的一天。

其他 2022/1/1 18:16:16 有579人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶