程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从 http.Get 获取 JSON 响应大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从 http.Get 获取 JSON 响应?

开发过程中遇到如何从 http.Get 获取 JSON 响应的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从 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 调用的内容)。原因是默认客户端没有设置超时;如果远程服务器没有响应,那你的日子就不好过了。

解决方法

我正在尝试从网络读取 JSON 数据,但该代码返回空结果。我不确定我在这里做错了什么。

package main

import "os"
import "fmt"
import "net/http"
import "io/ioutIl"
import "encoding/json"

type Tracks struct {
    Toptracks []Toptracks_info
}

type Toptracks_info struct {
    Track []Track_info
    Attr  []Attr_info
}

type Track_info struct {
    Name       String
    Duration   String
    Listeners  String
    Mbid       String
    Url        String
    Streamable []Streamable_info
    Artist     []Artist_info
    Attr       []Track_attr_info
}

type Attr_info struct {
    Country    String
    Page       String
    PerPage    String
    @R_574_10586@lPages String
    @R_574_10586@l      String
}

type Streamable_info struct {
    Text      String
    Fulltrack String
}

type Artist_info struct {
    Name String
    Mbid String
    Url  String
}

type Track_attr_info struct {
    Rank String
}

func get_content() {
    // json data
    url := "http://ws.audioscrobbler.com/2.0/?method=geo.gettoptracks&api_key=c1572082105bd40d247836b5c1819623&format=json&country=Netherlands"

    res,err := http.Get(url)

    if err != nil {
        panic(err.Error())
    }

    body,err := ioutIl.ReadAll(res.body)

    if err != nil {
        panic(err.Error())
    }

    var data Tracks
    json.Unmarshal(body,&data)
    fmt.Printf("Results: %v\n",data)
    os.Exit(0)
}

func main() {
    get_content()
}

大佬总结

以上是大佬教程为你收集整理的如何从 http.Get 获取 JSON 响应全部内容,希望文章能够帮你解决如何从 http.Get 获取 JSON 响应所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。