2015 подписчиков
👣 Тэги структур в Go
▶️В Go при сериализации JSON в структуру используются мета-теги, которые записываются рядом с полями структуры:
type Response2 struct {
Page int `json:"page"`
Fruits []string `json:"fruits"`
}
В данном случае это ``json:"page"`` и ``json:"fruits"``.
Но иногда, вместо JSON используются другие стандарты, BSON и др. Так вот, что делать в случае других стандартов?
▶️Сразу можно сказать, что в теге может быть несколько полей для разных стандартов, например, тут одновременно можно обращаться со структурой как с JSON, и как с YAML:
type Response2 struct {
Page int `json:"page" yaml:"page" validation:"min:1,max:10"`
Fruits []string `json:"fruits" yaml:"fruits,omitempty" validation:"nonempty"`
}
r := &Response2{}
json.Read("file.json", r)
validator.Validate(r)
yaml.Write("file.yaml", r)
⏩Также тэги можно разбирать самостоятельно и использовать в своих библиотеках, подробнее об этом тут.
Около минуты
14 апреля 2024