golang中json的使用
一、Unmarshal和Marshal方法
golang中使用json,经常会使用到两个函数Unmarshal和Marshal,前者用于将json数据反序列化为其他数据,后者用于将struct、map、slice序列化为json数据。
1、Unmarshal方法
1func Unmarshal(data []byte, v interface{}) error
2将json反序列化成struct对象
3将json 反序列化到map中
4将json反序列化到slice中
2、Marshal方法
1func Marshal(v interface{}) ([]byte, error)
2将struct对象序列化成json
3将map序列化成json
4将slice序列化成json
二、使用示例
1package main
2import (
3 "fmt"
4 "encoding/json"
5)
6type User struct {
7 Username string
8 Password string
9 FriendName []string
10}
11func main() {
12 user:=User{}
13 user.Username="Tom"
14 user.Password="123456"
15 user.FriendName=[]string{"Li","Fei"}
16 //将struct转成json字符串,注意:结构体中的字段首字母必须大写,否则无法解析
17 if userJSON,err:=json.Marshal(user);err==nil{
18 fmt.Println(string(userJSON)) //打印结果:{"Username":"Tom","Password":"123456","FriendName":["Li","Fei"]}
19 }
20 //将slice转成json字符串
21 arr:=[]string{"Apple","Orange","Banana"}
22 if arrJSON,err:=json.Marshal(arr);err==nil{
23 fmt.Println(string(arrJSON)) //打印结果:["Apple","Orange","Banana"]
24 }
25 //将map转成json字符串
26 m:=map[string]string{"浙江":"杭州","湖南":"长沙"}
27 if mJSON,err:=json.Marshal(m);err==nil{
28 fmt.Println(string(mJSON)) //打印结果:{"浙江":"杭州","湖南":"长沙"} }
29 //json转成struct jsonStr:=`{"Username":"Tom","Password":"123456","FriendName":["Li","Fei"]}`
30 var userJSON User
31 if err:=json.Unmarshal([]byte(jsonStr),&userJSON);err==nil{
32 fmt.Println(userJSON) //打印结果:{Tom 123456 [Li Fei]}
33 }
34 //json转成slice
35 jsonFruit:=`["Apple","Orange","Banana"]`
36 var arrFruit []string
37 if err:=json.Unmarshal([]byte(jsonFruit),&arrFruit);err==nil{
38 fmt.Println(arrFruit) //打印结果:[Apple Orange Banana]
39 }
40 //json转成map
41 jsonCity:=`{"浙江":"杭州","湖南":"长沙"}`
42 var mapCity map[string]string
43 if err:=json.Unmarshal([]byte(jsonCity),&mapCity);err==nil{
44 fmt.Println(mapCity) //打印结果: map[浙江:杭州 湖南:长沙]
45 }
46}
参考页面:gobyexample之json应用
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/go-json/5859.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.