json
包裏使用的時候,結構體裏的變量不加tag
能不能正常轉成json
裏的字段?golang
首字母小寫
,則爲private
。不管如何不能轉
,由於取不到反射信息
。若是變量首字母大寫
,則爲public
。面試
不加tag
,能夠正常轉爲json
裏的字段,json
內字段名跟結構體內字段原名一致
。加了tag
,從struct
轉json
的時候,json
的字段名就是tag
裏的字段名,原字段名已經沒用。經過一個例子加深理解。json
package main import ( "encoding/json" "fmt" ) type J struct { a string //小寫無tag b string `json:"B"` //小寫+tag C string //大寫無tag D string `json:"DD"` //大寫+tag } func main() { j := J { a: "1", b: "2", C: "3", D: "4", } fmt.Printf("轉爲json前j結構體的內容 = %+v\n", j) jsonInfo, _ := json.Marshal(j) fmt.Printf("轉爲json後的內容 = %+v\n", string(jsonInfo)) }
輸出數組
轉爲json前j結構體的內容 = {a:1 b:2 C:3 D:4} 轉爲json後的內容 = {"C":"3","DD":"4"}
小寫無tag
,小寫+tag
,大寫無tag
,大寫+tag
。json
後首字母小寫的
無論加不加tag都不能
轉爲json
裏的內容,而大寫的
加了tag
能夠取別名
,不加tag
則json
內的字段跟結構體字段原名一致
。