gpt4 book ai didi

go - 解码在根级别没有键的元组

转载 作者:数据小太阳 更新时间:2023-10-29 03:11:00 25 4
gpt4 key购买 nike

我正在尝试使用 golang,并认为从 rest api 解析一些 json 是一个很好的用例。它看起来就像定义一个结构并将 api 响应解码到其中一样简单。

当然,我正在使用的 api 响应并不是一个很好的选择。我正在玩 craigslist jsonsearch - 响应是 2 个对象的数组。第一个对象是结果数组,第二个对象是 misc。元数据。

[  
[
{
"Ask":6000,
"CategoryID":145,
"ImageThumb":"https:\/\/images.craigslist.org\/01212_dZ9PfxSmjEH_50x50c.jpg",
"Latitude":39.591784,
"Longitude":-105.083209,
"PostedDate":1533949799,
"PostingID":6642987803,
"PostingTitle":"1991 Jeep Wrangler YJ 4.0 4X4 $6000 OBO",
"PostingURL":"https:\/\/denver.craigslist.org\/cto\/d\/1991-jeep-wrangler-yj-40-4xobo\/6642987803.html"
}
],
{
"NonGeocoded":2,
"baseurl":"\/\/denver.craigslist.org",
"clat":41.2077284889441,
"clng":-101.993919320865,
"clustered":0,
"geocoded":118,
"zoom":7
}
]

事实上,这些对象都没有键,这是我迷路的地方。

我创建了一个我认为应该映射到此响应的结构。没有作为字段标签的键,我迷路了......如果只有某种方式可以说响应中的第一个元素应该映射到 Results[] 结构并将第二个项目映射到 Metadata 结构。

type SearchResponse struct {
Results []struct {
Ask int
CategoryID int
ImageThumb string
Latitude float32
Longitude float32
PostedDate int64
PostingID int64
PostingTitle string
PostingURL string
}`json:"??first element??"`
Metadata struct{
NonGeocoded int
baseurl string
clat float32
clng float32
clustered int
geocoded int
zoom int
}`json:"??second element??"`
}


func main() {

searchUrl := "https://denver.craigslist.org/jsonsearch/cta?query=jeep+wrangler&sort=rel&max_price=15000&auto_transmission=1"
resp, _ := http.Get(searchUrl)
bytes, _ := ioutil.ReadAll(resp.Body)

var searchResp SearchResponse
if err := json.Unmarshal(bytes, &searchResp); err != nil {
panic(err)
}

fmt.Print("it worked!")
resp.Body.Close()

}

有没有更简单/更好的方法来做到这一点?

最佳答案

就用这个https://github.com/Anderson-Lu/gofasion .这很容易。

Gofasion是一个轻量级的解析库,方便开发时解析接口(interface)JSON数据。它最大的特点是支持链式调用,即可以直接获取目标键名和键值,无需预先定义数据的结构。

关于go - 解码在根级别没有键的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800506/

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