r1筆記day25 json協議以及反序列化樣例

2021-10-01 21:26:32 字數 2441 閱讀 3741

分別對struct、slice、基本型別、map進行序列化和反序列化:

package main

import (

"encoding/json"

"fmt"

)type user struct

//結構體進行序列化

func teststruct() (ret string, err error)

"before marshal: ", user1)

data, err := json.marshal(user1)

if err != nil

"after marshal: ", data)

ret = string(data)

"json format--> string(struct): ", ret)

return

}//變數進行序列化

func testint() (ret string, err error)

ret = string(data)

return

}//map進行序列化

func testmap() (ret string, err error)

m = make(map[string]inte***ce{})

m["username"] = "user1"

m["age"] = 18

m["***"] = "man"

data, err := json.marshal(m)

if err != nil

ret = string(data)

return

}//對slice進行序列化,slice裡面可以是struct,基本型別,也可以是map。

func testslice() (ret string, err error)

var m map[string]inte***ce{}

m = make(map[string]inte***ce{})

m["username"] = "user1"

m["age"] = 18

m["***"] = "male"

m["username"] = "user2"

m["age"] = 22

m["***"] = "female"

data, err := json.marshal(s)

if err != nil

ret = string(data)

return

}//反序列化struct測試

func unmsstruct()

var user1 user

err = json.unmarshal(byte(data), &user1)

if err != nil

fmt.println("unmarshal: ", user1)

}//反序列化map測試

func unmsmap()

var m map[string]inte***ce{}

err = json.unmarshal(byte(data), &m)

if err != nil

fmt.println("unmarshal: ", m)

}//反序列化slice測試

func unmsslice()

var s map[string]inte***ce{}

err = json.unmarshal(byte(data), &s)

if err != nil

fmt.println("unmarshal: ", s)

}//反序列化int測試

func unmsint()

var i int

err = json.unmarshal(byte(data), &i)

if err != nil

fmt.println("unmarshal: ", i)

}func main()

output

ps f:\go> .\main.exe

**********====結構體反序列化**********====

unmarshal:

**********====map反序列化**********====

unmarshal: map[age:18 ***:man username:user1]

**********====slice反序列化**********====

unmarshal: [map[age:22 ***:female username:user2] map[age:22 ***:female username:user2]]

**********====基本型別反序列化**********====

unmarshal: 100

ps f:\go>

r1筆記day23 終端讀寫

操作終端相關檔案控制代碼常量 os.stdin os.stdout os.stderr 終端讀寫示例 package main import fmt type student struct func main fmt.sscanf 可以從乙個字串裡面格式化輸入。提取出來後,存入 struct。帶緩衝...

r1筆記第5天 Golang(04)

example01 統計輸入的一串數字的字母,空格,數字的數量。package main import fmt os bufio func process str string wordcount,spacecount,nubercount,othercount int return func ma...

r1筆記第8天 Gloang(07)

example01 陣列是個值引用,要是要進行排序,需要傳個切片進去。然後用sort進行排序。string float 什麼的也一樣進行 package main import fmt sort func testintsort sort.ints a fmt.println a func main...