(三十八)golang--json(對切片、map、結構體進行序列化)

JSON(javascript object notation)是一種輕量級的數據交換格式,易於人閱讀和編寫,同時也易於機器解析和生成。key-valjavascript

JSON是在2001年開始推廣的數據格式,目前已成爲主流的數據格式。html

JSON易於機器解析和生成,並有效地提高網絡傳輸效率。一般程序在網絡傳輸時會先將數據(結構體、map)等序列化成json字符串,到接收方獲得json數據時,再反序列化恢復成原來的數據類型。這種方式已成爲各個語言的標準。java

要解析成json格式,struct裏面的字段必須大寫!!!否則解析出來的是{}
json

由於Json包至關於一個外包,字段大寫才能被其調用。。。網絡

package main import ( "encoding/json"
    "fmt" ) type monster struct { Name string Age int Birthday string Sal float64 Skill string } func testStruct() { m := monster{ Name: "牛魔王", Age: 10, Birthday: "1994-09-18", Sal: 10000.0, Skill: "牛魔拳", } //序列化
    data, err := json.Marshal(&m) if err != nil { fmt.Println("序列化失敗,error=", err) } fmt.Printf("序列化以後的結果:%v\n", string(data)) } func testMap() { var a map[string]interface{} a = make(map[string]interface{}) a["name"] = "孫悟空" a["age"] = 20 a["address"] = "水簾洞" a["skill"] = "七十二變" data, err := json.Marshal(a) if err != nil { fmt.Println("序列化失敗,error=", err) } fmt.Printf("序列化以後的結果:%v\n", string(data)) } func testSlice() { var slice []map[string]interface{} var m1 map[string]interface{} m1 = make(map[string]interface{}) m1["name"] = "孫悟空" m1["age"] = 20 m1["address"] = "水簾洞" m1["skill"] = [2]string{"七十二變", "如意金箍棒"} slice = append(slice, m1) var m2 map[string]interface{} m2 = make(map[string]interface{}) m2["name"] = "豬八戒" m2["age"] = 30 slice = append(slice, m2) data, err := json.Marshal(slice) if err != nil { fmt.Println("序列化失敗,error=", err) } fmt.Printf("序列化以後的結果:%v\n", string(data)) } func testFloat64() { var a float64 a = 0.987 data, err := json.Marshal(a) if err != nil { fmt.Println("序列化失敗,error=", err) } fmt.Printf("序列化以後的結果:%v\n", string(data)) } func main() { testStruct() testMap() testSlice() testFloat64() }

要想序列化成小寫的,只須要用tag指定便可:app

 

對普通數據類型進行序列化是沒意義的,只是至關於轉換成string類型。 spa

 

原文出處:https://www.cnblogs.com/xiximayou/p/11938441.htmlcode

相關文章
相關標籤/搜索