Go語言對JSON數(shù)據(jù)進行序列化和反序列化
更新時間:2022年07月18日 14:49:45 作者:taadis
這篇文章介紹了Go語言對JSON數(shù)據(jù)進行序列化和反序列化的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
golang中對json的序列化/反序列化操作還是比較容易的,序列化操作主要是通過encoding/json
包的Marshal()
方法來實現(xiàn),反序列化操作主要是通過encoding/json
包的Unmarshal()
方法來實現(xiàn)。
//JSON序列化和反序列化 //可用在api序列化輸出 //轉成結構體,方便程序操作等 package main import ( "encoding/json" "fmt" ) type Response1 struct { Page int Fruits []string } type Response2 struct { Page int `json:"page"` Fruits []string `json:"fruits"` } func main() { //布爾型 boolByte, _ := json.Marshal(true) fmt.Println(string(boolByte)) //整數(shù)型 intByte, _ := json.Marshal(100) fmt.Println(string(intByte)) //浮點型 floatByte, _ := json.Marshal(1.23456) fmt.Println(string(floatByte)) //字符串 stringByte, _ := json.Marshal("字符串啊啊啊") fmt.Println(string(stringByte)) //切片 sliceByte, _ := json.Marshal([]string{"apple", "orange", "banana"}) fmt.Println(string(sliceByte)) //字典 mapByte, _ := json.Marshal(map[string]int{"apple": 5, "orange": 6, "banana": 7}) fmt.Println(string(mapByte)) //自定義類型1 customsByte1, _ := json.Marshal(&Response1{Page: 1, Fruits: []string{"apple", "orange", "banana"}}) fmt.Println(string(customsByte1)) //自定義類型2,tag語法 customsByte2, _ := json.Marshal(&Response2{Page: 2, Fruits: []string{"apple", "orange", "banana"}}) fmt.Println(string(customsByte2)) //反序列化到結構體 json1 := `{"Page":1,"Fruits":["apple","orange","banana"]}` json2 := `{"page":2,"fruits":["apple","orange","banana"]}` response1 := Response1{} response2 := Response2{} json.Unmarshal([]byte(json1), &response1) fmt.Println(response1) json.Unmarshal([]byte(json2), &response2) fmt.Println(response2) }
到此這篇關于Go語言對JSON數(shù)據(jù)進行序列化和反序列化的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Golang使用singleflight解決并發(fā)重復請求
高并發(fā)的場景下,經(jīng)常會出現(xiàn)并發(fā)重復請求資源的情況,singleflight是golang內置的一個包,這個包提供了對重復函數(shù)調用的抑制功能,所以下面我們就來看看如何使用它解決并發(fā)重復請求吧2023-08-08使用gRPC實現(xiàn)獲取數(shù)據(jù)庫版本
這篇文章主要為大家詳細介紹了如何使用gRPC實現(xiàn)獲取數(shù)據(jù)庫版本,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下2023-12-12