在Go語言中,json屬性的名稱默認是區分大小寫的。
假如一個json字符串為:
{ "name": "Tom", "Age": 20 }
在Go中解析該json字符串時,需要對屬性的名稱進行區分大小寫。
type Person struct { Name string `json:"name"` Age int `json:"Age"` } func main() { jsonStr := `{ "name": "Tom", "Age": 20 }` var p Person err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { panic(err) } fmt.Println(p.Name, p.Age) }
注意,在Person結構體中,屬性的名稱與json中定義的名稱一致,并且屬性名稱也是大寫的。
通過在屬性名稱后添加json:"xxx"
標記,可以指定該屬性對應json中的某個名稱:
type Person struct { Name string `json:"name"` Age int `json:"age"` }
這樣修改后,該結構體中的屬性名稱就與json中的一致了。
同樣,Marshal方法也是區分大小寫的。如果想輸出json字符串時屬性名稱不區分大小寫,可以通過修改結構體的tag達到目的:
type Person struct { Name string `json:"name"` Age int `json:"Age"` }
這樣定義后,使用Marshal方法輸出的json字符串中,屬性名稱的大小寫將與結構體中定義的大小寫一致。