将 JSON 数组返回到 Struct Golang

我的主要目标是将 JSON 对象传递回客户端。但是,我的结构中不断出现 nil 或空值。如何获得预期和所需的 JSON 数组响应?下面是我的代码片段。


package main


import (

    "net/http"

    "fmt"

    "encoding/json"

)


type News struct {

    NewsID      int     `json:"newsId"`

    PlayerID    int     `json:"playerId"`

    TeamID      int     `json:"teamId"`

    Team        string  `json:"team"`

    Title       string  `json:"title"`

    Content     string  `json:"content"`

    Url         string  `json:"url"`

    Source      string  `json:"source"`

    TermsOfUse  string  `json:"terms"`

    Updated     string  `json:"updated"`

}


func GetBoxScore (w http.ResponseWriter, r *http.Request) {

    news := News{}

    req, _ := http.NewRequest("GET","https://api.fantasydata.net/v3/nhlpb/scores/JSON/News", nil)

    req.Header.Set("Ocp-Apim-Subscription-Key", "API KEY")

    req.Host = "api.fantasydata.net"

    client := &http.Client{}

    res, err := client.Do(req)

    defer res.Body.Close()


    if err != nil {

        fmt.Printf("The HTTP request failed with error %s\n", err)

    }

    err = json.NewDecoder(r.Body).Decode(&news)

    newsJson, err := json.Marshal(news)

    if err != nil {

        panic(err)

    }

    w.Header().Set("Content-Type", "application/json")

    w.WriteHeader(http.StatusAccepted)

    w.Write(newsJson)

}

目前,响应是我的空 News 结构,所有值为 nil。我想要和期待的回应如下:


  [

        {

            "NewsID": 8919,

            "PlayerID": 30003647,

            "TeamID": 28,

            "Team": "VAN",

            "Title": "Rumors have Elias Pettersson back this week",

            "Content": "The rumor mill has Elias Pettersson (concussion) returning this week.",

            "Url": "http://www.rotoworld.com/player/nhl/5819/elias-pettersson",

            "Source": "NBCSports.com",

            "TermsOfUse": "NBCSports.com feeds in the RSS format are provided free of charge for use by individuals for personal, non-commercial uses. More details here: http://fantasydata.com/resources/rotoworld-rss-feed.aspx",

            "Updated": "2018-10-21T11:54:00"

        },



慕的地6264312
浏览 88回答 2
2回答

aluckdog

我要在这里提到两件事。首先,你是否得到了你期望的回应?你可能想检查一下。第二,您提供的 json 是一组新闻,而不是单个新闻。您可能希望将新闻类型更改为数组而不是单个新闻。type NewsItem struct {    NewsID      int     `json:"newsId"`    PlayerID    int     `json:"playerId"`    TeamID      int     `json:"teamId"`    Team        string  `json:"team"`    Title       string  `json:"title"`    Content     string  `json:"content"`    Url         string  `json:"url"`    Source      string  `json:"source"`    TermsOfUse  string  `json:"terms"`    Updated     string  `json:"updated"`}type News []NewsItem

胡子哥哥

在下一行err = json.NewDecoder(r.Body).Decode(&news)您正在传递新闻结构,因为 json 实际上是一个数组。因此,您需要创建一片新闻结构,然后传递它。newsList := make([]News,0) err = json.NewDecoder(r.Body).Decode(&newsList)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go