gpt4 book ai didi

json - 如何解码请求返回的 JSON?

转载 作者:IT王子 更新时间:2023-10-29 01:42:12 25 4
gpt4 key购买 nike

我正在尝试使用 USDA's Farmers Market Directory API使用邮政编码接收有关附近农贸市场位置的数据。我将未编码的响应主体存储在:

type marketResponse struct {
MapsLink string `json:"GoogleLink"`
Address string `json:"Address"`
Schedule string `json:"Schedule"`
Products string `json:"Products"`
}

使用代码:

//TODO: location: "http://search.ams.usda.gov/farmersmarkets/v1/data.svc/locSearch?lat=" + lat + "&lng=" + lng
resp, err := http.Get("http://search.ams.usda.gov/farmersmarkets/v1/data.svc/zipSearch?zip=" + zipcode)
if err != nil {
log.Printf("Could net search zipcode %s: %v", zipcode, err)
}
defer func() {
if err := resp.Body.Close(); err != nil {
log.Println(err)
}
}()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
}

newMarket := &marketResponse{}
if err := json.Unmarshal(body, newMarket); err != nil {
log.Println(err)
}

log.Println("response: " + newMarket.Address)

问题是,响应主体在 JSONp 中,而我在 JSON 中解码。我如何在 JSONp 中解码,是否使用外部包?

最佳答案

响应主体是 JSON - 根据响应的 Content-Type:application/json; charset=utf-8 header 。

问题是您的 marketResponse 结构与返回的 JSON 无关。使用 JSON-to-Go ,你的结构应该是这样的:

type MarketResponse struct {
Results []Result `json:"results"`
}

type Result struct {
ID string `json:"id"`
Marketname string `json:"marketname"`
}

目前尚不清楚您现有的 marketResponse 结构在此处适合的位置,因为两个 API 端点都不会返回具有该结构的数据。

PS:您应该处理(或返回)您的错误,而不仅仅是记录它们;记录它们仍然意味着您的函数继续执行未处理的错误。当您的代码遇到 nil 响应主体或 JSON 解码错误时,它可能会出现 panic 。

关于json - 如何解码请求返回的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com