Go标准库encoding/json在执行Unmarshal(反序列化)时JSON中的键映射到结构体字段的优先级为 1.精确匹配Tag 2.精确匹配字段名 3.不分大小写匹配
如果JSON中没有Tag和字段名,就会匹配不分大小写的字段名,如 type User struct{ role string } 当我们发送{"Role","admin"},User结构体没有设置Tag,字段名也不匹配,最终在不分大小写中匹配到,role成功赋值admin
但是如果设置了Tag就不行了,如 type User struct{ role string `json:"role"` } 这个必须要是role
|