golang是一門十分流行的編程語言,兼具高并發和高性能的特點。在golang中處理json是非常常見的操作,尤其是在網絡編程中。所謂json解碼,就是將json格式的數據轉換成golang中的數據結構。
示例代碼: package main import ( "encoding/json" "fmt" ) type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := `{"name": "小明", "age": 20}` var u User if err := json.Unmarshal([]byte(jsonStr), &u); err != nil { panic(err) } fmt.Println(u.Name, u.Age) }
在上面的例子中,我們首先定義了一個User結構體,并為其指定了json標簽。在main函數中,首先定義了一個json字符串,然后將其解析成User結構體并打印出其Name和Age屬性。在這里,需要注意的是,在解析json字符串時,我們需要使用json.Unmarshal函數,并將其結果傳遞給一個User類型的變量。
不僅如此,golang還提供了一些其他的json解碼方式,如解析到map、slice等數據結構。例如下面這個例子:
示例代碼: package main import ( "encoding/json" "fmt" ) func main() { jsonStr := `[{"name": "小明", "age": 20}, {"name": "小紅", "age": 18}]` var users []map[string]interface{} if err := json.Unmarshal([]byte(jsonStr), &users); err != nil { panic(err) } for _, user := range users { fmt.Println(user["name"], user["age"]) } }
在上面這個例子中,我們定義了一個json字符串,其中包含了兩個User對象。我們可以將其解析成一個由map[string]interface{}組成的slice,并使用循環打印出每個User對象的Name和Age屬性。
通過以上兩個例子的演示,我們可以看出,在golang中進行json解碼是非常方便的,只需要使用少量的代碼就可以完成大部分常見的解碼操作。
下一篇c json中文 亂碼