在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。
上一篇html常用字體代碼
下一篇vue對接地圖