golang基础-json序列化、反序列化、自定义error
来源:互联网 发布:网络玻璃的意思是什么 编辑:程序博客网 时间:2024/06/01 07:29
json协议
结构体转json
package mainimport ( "fmt" "encoding/json")type User struct { UserName string `json:"username"` NickName string `json:"nickname"` Age int Birthday string Sex string Email string Phone string}/*结构体转json*/func testStruct() { user1 := &User{ UserName: "user1", NickName: "上课看似", Age: 18, Birthday: "2008/8/8", Sex: "男", Email: "mahuateng@qq.com", Phone: "110", } data, err := json.Marshal(user1) if err != nil { fmt.Printf("json.marshal failed, err:", err) return } fmt.Printf("%s\n", string(data))}func main() { testStruct() fmt.Println("----")}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go{"username":"user1","nickname":"上课看似","Age":18,"Birthday":"2008/8/8","Sex":"男","Email":"mahuateng@qq.com","Phone":"110"}----PS E:\golang\go_pro\src\safly>
map转json
package mainimport ( "fmt" "encoding/json")type User struct { UserName string `json:"username"` NickName string `json:"nickname"` Age int Birthday string Sex string Email string Phone string}/*map转json*/func testMap() { var mmp map[string]interface{} mmp = make(map[string]interface{}) mmp["username"] = "user" mmp["age"] = 19 mmp["sex"] = "man" data,err := json.Marshal(mmp) if err != nil{ fmt.Println("json marshal failed,err:",err) return } fmt.Println("%s\n",string(data))}func main() { testMap() fmt.Println("----")}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go{"age":19,"sex":"man","username":"user"}----PS E:\golang\go_pro\src\safly>
int转json
package mainimport ( "fmt" "encoding/json")type User struct { UserName string `json:"username"` NickName string `json:"nickname"` Age int Birthday string Sex string Email string Phone string}/*slice转json*/func testSlice() {}func testInt() { var age = 100 data, err := json.Marshal(age) if err != nil { fmt.Printf("json.marshal failed, err:", err) return } fmt.Printf("%s\n", string(data))}func main() { testSlice() testInt() fmt.Println("----")}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go100----PS E:\golang\go_pro\src\safly>
slice转json
package mainimport ( "fmt" "encoding/json")func testSlice() { var m map[string]interface{} var s []map[string]interface{} m = make(map[string]interface{}) m["username"] = "user1" m["age"] = 18 m["sex"] = "man" s = append(s, m) m = make(map[string]interface{}) m["username"] = "user2" m["age"] = 29 m["sex"] = "female" s = append(s, m) data, err := json.Marshal(s) if err != nil { fmt.Printf("json.marshal failed, err:", err) return } fmt.Printf("%s\n", string(data))}func main() { testSlice()}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go[{"age":18,"sex":"man","username":"user1"},{"age":29,"sex":"female","username":"user2"}]PS E:\golang\go_pro\src\safly>
json反序列化为结构体
package mainimport ( "encoding/json" "fmt")type User struct { UserName string `json:"username"` NickName string `json:"nickname"` Age int Birthday string Sex string Email string Phone string}func testStruct() (ret string, err error) { user1 := &User{ UserName: "user1", NickName: "上课看似", Age: 18, Birthday: "2008/8/8", Sex: "男", Email: "mahuateng@qq.com", Phone: "110", } data, err := json.Marshal(user1) if err != nil { err = fmt.Errorf("json.marshal failed, err:", err) return } ret = string(data) return}func test() { data, err := testStruct() if err != nil { fmt.Println("test struct failed, ", err) return } var user1 User err = json.Unmarshal([]byte(data), &user1) if err != nil { fmt.Println("Unmarshal failed, ", err) return } fmt.Println(user1)}func main() { test() // test2()}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go{user1 上课看似 18 2008/8/8 男 mahuateng@qq.com 110}PS E:\golang\go_pro\src\safly>
json反序列化为map
package mainimport ( "encoding/json" "fmt")func testMap() (ret string, err error) { var m map[string]interface{} m = make(map[string]interface{}) m["username"] = "user1" m["age"] = 18 m["sex"] = "man" data, err := json.Marshal(m) if err != nil { err = fmt.Errorf("json.marshal failed, err:", err) return } ret = string(data) return}func test2() { data, err := testMap() if err != nil { fmt.Println("test map failed, ", err) return } var m map[string]interface{} err = json.Unmarshal([]byte(data), &m) if err != nil { fmt.Println("Unmarshal failed, ", err) return } fmt.Println(m)}func main() { test2()}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.gomap[age:18 sex:man username:user1]PS E:\golang\go_pro\src\safly>
自定义error
package mainimport ( "fmt" "os" "time")type PathError struct { path string op string createTime string message string}func (p *PathError) Error() string { return fmt.Sprintf("path=%s op=%s createTime=%s message=%s", p.path, p.op, p.createTime, p.message)}/*type error interface { Error() string}*/func Open(filename string) error { file, err := os.Open(filename) if err != nil { return &PathError{ path: filename, op: "read", message: err.Error(), createTime: fmt.Sprintf("%v", time.Now()), } } defer file.Close() return nil}func main() { err := Open("C:/sdklflakfljdsafjs.txt") switch v := err.(type) { case *PathError: fmt.Println("get path error,", v) default: }}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.goget path error, path=C:/sdklflakfljdsafjs.txt op=read createTime=2017-11-05 20:09:23.4928719 +0800 CST message=open C:/sdklflakfljdsafjs.txt: The system cannot find the file specified.PS E:\golang\go_pro\src\safly>
阅读全文
0 0
- golang基础-json序列化、反序列化、自定义error
- Json-lib 自定义序列化和反序列化
- JSON序列化、JSON反序列化
- Json序列化 与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列化
- Json序列化与反序列化
- Json序列化和反序列化
- json序列化和反序列化
- Json序列化与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列化
- 【转】JSON序列化反序列化
- C# 序列化/反序列化 json
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- JSON序列化反序列化
- 【1701H1】【穆晨】【171105】连续第二十六天总结
- TankWar游戏(图片版)----阶段三
- 图书馆SQL查询2
- 地理学与水利工程学科体系示意图
- java项目之间的通信
- golang基础-json序列化、反序列化、自定义error
- JZOJ5454. 【NOIP2017提高A组冲刺11.5】仔细的检查 树hash
- LeetCode算法问题11 —— Maximum Length of Repeated Subarray
- mysq数据库优化
- 数据结构起点
- 自我反思
- LDA
- 【Aladdin Unity3D Shader编程】之二 光照模型(一)
- 2017/11/5日-记录一些碎碎念