色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go json三層嵌套解析失敗

錢諍諍2年前8瀏覽0評論

在golang開發中,常常需要解析JSON格式的字符串。但遇到復雜的JSON字符串時,會出現三層嵌套解析失敗的情況。

假如有一段JSON字符串如下:

{
"code": 200,
"message": "success",
"data": {
"id": 1,
"name": "apple",
"prices": [
{
"type": "high",
"price": 5.0
},
{
"type": "low",
"price": 2.0
}
],
"info": {
"origin": "China",
"weight": 1000
}
}
}

若需要取出info中的weight,可以通過以下代碼:

type Data struct {
Id     int    `json:"id"`
Name   string `json:"name"`
Prices []struct {
Type  string  `json:"type"`
Price float64 `json:"price"`
} `json:"prices"`
Info struct {
Origin string `json:"origin"`
Weight int    `json:"weight"`
} `json:"info"`
}
func main() {
jsonString := "..."
data := &Data{}
err := json.Unmarshal([]byte(jsonString), data)
if err != nil {
panic(err)
}
fmt.Println(data.Info.Weight)
}

但若需要解析出prices中的每個元素的類型和價格,則需要繼續嵌套:

type Price struct {
Type  string  `json:"type"`
Price float64 `json:"price"`
}
type Data struct {
Id     int     `json:"id"`
Name   string  `json:"name"`
Prices []Price `json:"prices"`
Info   struct {
Origin string `json:"origin"`
Weight int    `json:"weight"`
} `json:"info"`
}
func main() {
jsonString := "..."
data := &Data{}
err := json.Unmarshal([]byte(jsonString), data)
if err != nil {
panic(err)
}
for _, price := range data.Prices {
fmt.Println(price.Type, price.Price)
}
}

當需要解析出每個price中的type和price時,需要將Price結構體單獨聲明,從而拆分數據。這時,就能成功解析出每個price中的type和price了。

總的來說,對于三層嵌套的JSON字符串,需要對每層數據進行拆分和嵌套聲明,從而才能正確解析。