gpt4 book ai didi

json - Golang-解析嵌套的json值

转载 作者:行者123 更新时间:2023-12-01 22:06:35 24 4
gpt4 key购买 nike

我有一个看起来像这样的json数据:

    [
{
lat: "41.189301799999996",
lon: "11.918255998031015",
display_name: "Some place",
address: {
address: "Address",
country: "Country",
country_code: "CC"
},
geojson: {
type: "Polygon",
coordinates: [
[
[14.4899021,41.4867039],
[14.5899021,41.5867039],
]
]
}
}
]

我想解析此数据,从该数组中获取第一个元素,并将其转换为新的结构,如下所示:
type Location struct {
Name string
Country string
CountryCode string
Center Coordinate
Coordinates []Coordinate
}

我定义了这样的坐标类型:
type Coordinate struct {
Lat string `json:"lat"`
Lng string `json:"lon"`
}

但是,如果尝试这样解析:
bytes, err := ioutil.ReadAll(res.Body)

if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
}

var locations [0]Location

if err := json.Unmarshal(bytes, &locations); err != nil {
fmt.Println("Error parsing json", err)
}

fmt.Println(locations)

但是,这在终端给了我:
[{   { } []}]

如何解析这种json结构并将其转换为 location类型的结构?

最佳答案

您应该使用与输入文档匹配的结构来解码:

type Entry struct {
Lat string `json:"lat"`
Lon string `json:"lon"`
DisplayName string `json:"display_name"`
Address struct {
Address string `json:"address"`
Country string `json:"country"`
Code string `json:"country_code"`
} `json:"address"`
Geo struct {
Type string `json:"type"`
Coordinates [][][]float64 `json:"coordinates"`
} `json:"geojson"`
}

然后解码到一个Entry数组:
var entries []Entry
json.Unmarshal(data,&entries)

并且,使用 entries构造 Location s

关于json - Golang-解析嵌套的json值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61469269/

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