一、Unmarshal和Marshal方法
golang中使用json,经常会使用到两个函数Unmarshal和Marshal,前者用于将json数据反序列化为其他数据,后者用于将struct、map、slice序列化为json数据。
1、Unmarshal方法
func Unmarshal(data []byte, v interface{}) error
将json反序列化成struct对象
将json 反序列化到map中
将json反序列化到slice中
2、Marshal方法
func Marshal(v interface{}) ([]byte, error)
将struct对象序列化成json
将map序列化成json
将slice序列化成json
二、使用示例
package main
import (
"fmt"
"encoding/json"
)
type User struct {
Username string
Password string
FriendName []string
}
func main() {
user:=User{}
user.Username="Tom"
user.Password="123456"
user.FriendName=[]string{"Li","Fei"}
//将struct转成json字符串,注意:结构体中的字段首字母必须大写,否则无法解析
if userJSON,err:=json.Marshal(user);err==nil{
fmt.Println(string(userJSON)) //打印结果:{"Username":"Tom","Password":"123456","FriendName":["Li","Fei"]}
}
//将slice转成json字符串
arr:=[]string{"Apple","Orange","Banana"}
if arrJSON,err:=json.Marshal(arr);err==nil{
fmt.Println(string(arrJSON)) //打印结果:["Apple","Orange","Banana"]
}
//将map转成json字符串
m:=map[string]string{"浙江":"杭州","湖南":"长沙"}
if mJSON,err:=json.Marshal(m);err==nil{
fmt.Println(string(mJSON)) //打印结果:{"浙江":"杭州","湖南":"长沙"} }
//json转成struct jsonStr:=`{"Username":"Tom","Password":"123456","FriendName":["Li","Fei"]}`
var userJSON User
if err:=json.Unmarshal([]byte(jsonStr),&userJSON);err==nil{
fmt.Println(userJSON) //打印结果:{Tom 123456 [Li Fei]}
}
//json转成slice
jsonFruit:=`["Apple","Orange","Banana"]`
var arrFruit []string
if err:=json.Unmarshal([]byte(jsonFruit),&arrFruit);err==nil{
fmt.Println(arrFruit) //打印结果:[Apple Orange Banana]
}
//json转成map
jsonCity:=`{"浙江":"杭州","湖南":"长沙"}`
var mapCity map[string]string
if err:=json.Unmarshal([]byte(jsonCity),&mapCity);err==nil{
fmt.Println(mapCity) //打印结果: map[浙江:杭州 湖南:长沙]
}
}
参考页面:gobyexample之json应用
《golang中json的使用》有1条评论