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