欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

go 多維json

錢浩然2年前8瀏覽0評論

在Go語言中,處理JSON數據非常簡單,通過標準庫中的encoding/json包,我們可以快速的將JSON數據轉化為結構體實例,或將結構體實例轉化為JSON字符串。

對于單層JSON數據,轉化非常簡單:

type User struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
jsonStr := `{"name":"Tom", "age":18}`
var user User
err := json.Unmarshal([]byte(jsonStr), &user)
if err != nil {
panic(err)
}

但對于多維JSON數據,我們需要使用map[string]interface{}這個萬能型數據類型來處理多維數據結構。

jsonStr := `
{
"name": "Tom",
"schools": [
{
"name": "A School",
"address": "address 1"
},
{
"name": "B School",
"address": "address 2"
}
],
"work": {
"company": "Google",
"position": "Software Engineer"
}
}
`
var jsonData map[string]interface{}
err := json.Unmarshal([]byte(jsonStr), &jsonData)
if err != nil {
panic(err)
}
name := jsonData["name"].(string)
fmt.Println(name)
schools := jsonData["schools"].([]interface{})
for _, v := range schools {
school := v.(map[string]interface{})
schoolName := school["name"].(string)
fmt.Println(schoolName)
}
work := jsonData["work"].(map[string]interface{})
company := work["company"].(string)
position := work["position"].(string)
fmt.Println(company, position)

上述代碼中,我們通過map[string]interface{}來解析多維JSON數據。需要注意的是,我們需要使用type assertion對變量類型進行判斷,從而在解析JSON數據時避免出現panic。