在golang中,JSON是一種常見的數(shù)據(jù)交換格式,它是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫。JSON的優(yōu)點是它具有可讀性強、易于擴展、支持多種數(shù)據(jù)類型等特性。
Golang支持將結(jié)構(gòu)體類型轉(zhuǎn)換為JSON格式,這對于在客戶端和服務(wù)器之間傳輸數(shù)據(jù)非常有用。Golang使用小寫字母來表示JSON中的字段名。
type Person struct { firstName string `json:"first_name"` lastName string `json:"last_name"` age int `json:"age"` }
如上所示,在定義結(jié)構(gòu)體時,可以添加一個json標(biāo)簽,用來標(biāo)識JSON中該字段的名稱。當(dāng)使用Marshal函數(shù)時,將按照標(biāo)簽中的名稱來生成JSON。
func main() { p := Person{ firstName: "Jane", lastName: "Doe", age: 30, } b, err := json.Marshal(p) if err != nil { fmt.Println("error:", err) } fmt.Println(string(b)) }
上述代碼將輸出以下JSON:
{"first_name":"Jane","last_name":"Doe","age":30}
在使用Unmarshal函數(shù)將JSON轉(zhuǎn)換回結(jié)構(gòu)體時,需要使用小寫字母來表示JSON中的字段名:
func main() { jsonStr := `{"first_name":"Jane","last_name":"Doe","age":30}` var p Person err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { fmt.Println("error:", err) } fmt.Println(p) }
如上所示,在定義結(jié)構(gòu)體時,需要使用小寫字母來表示JSON中的字段名,可以使用tag標(biāo)記來指定JSON中的字段名。