Go 解组在根级别没有键的元组
我正在尝试使用golang,并且认为从RESTAPI解析一些json是一个很好的用例。它看起来很简单,只需定义一个结构并将api响应解组到该结构中即可 当然,我正在使用的api响应并不完全适合这种情况。我正在玩craigslist jsonsearch-响应是一个由2个对象组成的数组。第一个对象是结果数组,第二个对象是misc。元数据Go 解组在根级别没有键的元组,go,json-deserialization,Go,Json Deserialization,我正在尝试使用golang,并且认为从RESTAPI解析一些json是一个很好的用例。它看起来很简单,只需定义一个结构并将api响应解组到该结构中即可 当然,我正在使用的api响应并不完全适合这种情况。我正在玩craigslist jsonsearch-响应是一个由2个对象组成的数组。第一个对象是结果数组,第二个对象是misc。元数据 [ [ { "Ask":6000, "CategoryID":145, "Im
[
[
{
"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
}
]
事实上,这两个物体都没有钥匙,这正是我迷路的地方
我已经创建了一个我认为应该映射到此响应的结构。没有作为字段标记的键,我迷路了。。。如果只有某种方式可以说响应中的第一个元素应该将结果[]结构和第二个项映射到元数据结构
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()
}
有更简单/更好的方法吗?就用这个吧。这很容易
Gofasion是一个轻量级解析库,在开发过程中有助于解析接口JSON数据。它最大的特点是支持链式调用,这意味着可以直接获取目标键名和键值,而无需预先定义数据的结构。json是一个数组,Go结构被json包视为一个对象。[…]和类型SearchResponse struct{…}不计算。如果json是数组,请使用Go slices,如果是对象,请使用structs或maps。。。另一种选择是让SearchResponse实现json.Unmarshaler接口,然后它可以,例如,移除周围的尖括号,将元对象和unmarshal的结果数组拆分为两个字段,然后将两个json分别拆分为两个字段,要真正解开所有字段并以更清晰的方式记录它们:我很欣赏你的两个操场示例——它们都是合理的答案。我很乐意接受这两个答案中的任何一个作为最后的答案——将帖子作为答案而不是评论。