Go處理JSON數(shù)據(jù)的實現(xiàn)
Go 處理 json數(shù)據(jù)主要就是使用 json 包下的 Marshal 和 UnMarshal 兩個函數(shù)。
定義結(jié)構(gòu)體 User
type User struct { Name string `json:"name"` Age int `json:"age"` Height float64 `json:"height"` Hobbies []string `json:"hobbies"` }
json 標簽定義的名稱就是轉(zhuǎn)json時的key
1. 結(jié)構(gòu)體對象轉(zhuǎn) JSON 字符串
u := User{"張三", 19, 180.0, []string{"籃球", "跑步"}} bytes, _ := json.Marshal(u) // Marshal函數(shù)轉(zhuǎn)成的是 byte 數(shù)組 jsonStr := string(bytes) // 通過類型轉(zhuǎn)換將字節(jié)數(shù)組轉(zhuǎn)成json字符串 fmt.Println(jsonStr)
打印結(jié)果如下:
{"name":"張三","age":19,"height":180,"hobbies":["籃球","跑步"]}
2. JSON 字符串轉(zhuǎn)結(jié)構(gòu)體對象
var u2 User // 定義結(jié)構(gòu)體變量接收 jsonStr := `{"name":"張三","age":19,"height":180,"hobbies":["籃球","跑步"]}` _ = json.Unmarshal([]byte(jsonStr), &u2) // 相反地類型轉(zhuǎn)換將json字符串轉(zhuǎn)成字節(jié)數(shù)組后 再調(diào)用 json.Unmarshal 函數(shù) fmt.Println(u2)
打印結(jié)果如下:
{張三 19 180 [籃球 跑步]}
3. 結(jié)構(gòu)體切片轉(zhuǎn)JSON字符串
和對象類型一樣,都是調(diào)用json包的 Marshal 方法
u1 := User{"張三", 19, 180.0, []string{"籃球", "跑步"}} u2 := User{"李四", 18, 172.0, []string{"散步", "看書"}} u3 := User{"王五", 20, 169.0, []string{"籃球", "爬山"}} u4 := User{"趙六", 21, 158.0, []string{"乒乓球", "涉水"}} // 定義切片 users := []User{u1, u2, u3, u4} bytes, _ := json.Marshal(users) jsonStr := string(bytes) fmt.Println(jsonStr)
4. JSON字符串(JSON數(shù)組)轉(zhuǎn)切片
var users2 []User // 定義結(jié)構(gòu)體切片 _ = json.Unmarshal([]byte(jsonStr), &users2) // 將json數(shù)組(字符串)轉(zhuǎn)成結(jié)構(gòu)體切片 fmt.Println(users2)
參數(shù) jsonStr 就是3中轉(zhuǎn)成的json字符串
5. JSON 字符串轉(zhuǎn)Map,不需要定義結(jié)構(gòu)體
jsonStr := `{"name": "zhangsan", "age": 19}` mp := make(map[string]interface{}) _ = json.Unmarshal([]byte(jsonStr), &mp) fmt.Println(mp) fmt.Println(mp["name"]) // zhangsan // 遍歷map for k, v := range mp { fmt.Println(k, v) }
到此這篇關(guān)于Go處理JSON數(shù)據(jù)的實現(xiàn)的文章就介紹到這了,更多相關(guān)Go處理JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Golang中g(shù)oroutine執(zhí)行速度的問題
這篇文章主要介紹了解決Golang中g(shù)oroutine執(zhí)行速度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05Golang使用bcrypt實現(xiàn)密碼加密和校驗的操作代碼
bcrypt可以用于數(shù)據(jù)庫中的用戶密碼保存,相比md5而言更加的安全可靠,這篇文章主要介紹了Golang使用bcrypt實現(xiàn)密碼加密和校驗的操作代碼,需要的朋友可以參考下2024-05-05