go生成和解析json結構是按結構體模式解析的,因此結構體類型必定要多練習熟悉。golang
完整代碼(能夠運行):json
// +build ignore package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int } type Family struct { Persons []Person } func main() { // 根據結構體生成json manJson := Person{ Name: "Elinx", Age: 26, } man, _ := json.Marshal(manJson) fmt.Println(string(man)) // 解析json到結構體 jsonStr := []byte(`{"Name":"Elinx","Age":26}`) var man2 Person json.Unmarshal(jsonStr, &man2) fmt.Println(man2) // 解析json數組到切片(數組) jsonArrStr := []byte(`[{"Name":"Elinx","Age":26}, {"Name":"Twinkle","Age":21}]`) var jsonSlice []map[string]interface{} json.Unmarshal(jsonArrStr, &jsonSlice) fmt.Println(jsonSlice) // 解析多維數組 var f Family // 模擬傳輸的Json數據 familyJSON := `{"Persons": [{"Name":"Elinx","Age":26}, {"Name":"Twinkle","Age":21}] }` fmt.Println("======================") // 解析字符串爲Json json.Unmarshal([]byte(familyJSON), &f) // 直接輸出並不會展現所有層級,緣由待考究 fmt.Println(f) // 重新生成json字符串查看真實結構 jsons, _ := json.Marshal(f) fmt.Println(string(jsons)) }
直接解析單鍵json數組
能夠使用直接json轉map結構ui
// 直接解析json單key結構,不使用結構體 uploadJSON := `{"xxxx": "test","zzzz": "1111111"}` var jsonSlice2 map[string]interface{} json.Unmarshal([]byte(uploadJSON), &jsonSlice2) fmt.Println(jsonSlice2)
參考文獻
1.go json字符串轉切片
2.golang生成JSON及解析JSON
spa