Go語言中struct內部的反引號
阿新 • • 發佈:2019-02-19
type Account struct {
// 把struct編碼成json字串時,common.Address欄位的key是address
Address common.Address `json:"address"` // Ethereum account address derived from the key
// 把struct編碼成json字串時,URL欄位的key是url
URL URL `json:"url"` // Optional resource locator within a backend
}
見
package main import ( "encoding/json" "fmt" ) //父物件 type Human struct { Name string `json:"english_name"` //把struct編碼成json字串時,Name欄位的key是english_name,而不是Name Age int `json:"-"` //把struct編碼成json字串時,會忽略Age這個欄位 Weight float64 //`json:",string"` //編碼成字串,這個string選項只適用字串,浮點型和整型資料 } //子物件 type Student struct { Human Speciality string Hobby []string Score float64 `json:"total,omitempty"` //如果這個欄位是空值,則不編碼到JSON裡面,否則用total為名字編碼 Secret []byte `json:",omitempty"` //如果這個欄位是空值,則不編碼到JSON裡面,否則用Secret為名字編碼 //是一個經過base64編碼的字串 } func main() { json1Str := `[ {"Name": "James", "Age": 22,"Weight":65.80}, {"english_name": "Jack", "Age": 27,"Weight":78.50}, {"Name": "Kite", "Age": 19,"Weight":61.40}]` //定義一個切片物件 var humans []Human //json字串轉換成物件格式 err1 := json.Unmarshal([]byte(json1Str), &humans) if err1 != nil { fmt.Println(err1) } fmt.Println("json字串轉換成物件格式") fmt.Println(humans) fmt.Println("物件集合轉換成json字串") //切片初始化3個物件 slice1 := []Human{ Human{Name: "James", Age: 22, Weight: 65.80}, Human{Name: "Jack", Age: 27, Weight: 78.50}, Human{Name: "Kite", Age: 19, Weight: 61.40}} //物件集合轉換成json字串 data1, err2 := json.Marshal(slice1) if err2 != nil { fmt.Println(err2) } fmt.Println(string(data1)) fmt.Println("=======================================================================================") stus := make([]Student, 0) jason := Student{ Human: Human{ Name: "jason", Age: 28, Weight: 60.30}, Speciality: "computer science", Hobby: []string{"tennis", "swimming", "reading"}, Score: 725.5, Secret: []byte{'I', 20, 'L', 'o', 'v', 'e', 20, 'Y', 'o', 'u', '!'}} stus = append(stus, jason) fmt.Println(stus, "\n\r") //物件集合轉換成json字串 data2, err3 := json.Marshal(stus[0]) if err3 != nil { fmt.Println(err3) } fmt.Println(string(data2)) fmt.Println("=======================================================================================") json2Str := `[ {"english_name":"jason","Weight":60.3,"Speciality":"computer science","Hobby":["tennis","swimming","reading"],"total":725.5,"Secret":"SRRMb3ZlFFlvdSE="}]` //定義一個切片物件 var stuss []Student //json字串轉換成物件格式 err4 := json.Unmarshal([]byte(json2Str), &stuss) if err4 != nil { fmt.Println(err4) } fmt.Println("json字串轉換成物件格式") fmt.Println(stuss)}