這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
golang中使用json,經常會使用到兩個函數
func Unmarshal(data []byte, v interface{}) error
1 將json還原序列化成struct對象
2將json 還原序列化到map中
3 將json還原序列化到slice中
func Marshal(v interface{}) ([]byte, error)1將struct對象序列化成json
2將map序列化成json
3將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[浙江:杭州 湖南:長沙]
}
}