Короткий ответ на самом деле не тот, потому что Go обрабатывает JSON-маршалинг и демаршаллинг.Обычный шаблон для работы с вашим вариантом использования - просто определить структуру Response.
Классическим примером может быть что-то вроде следующего:
type User struct {
// fields
}
// Response type used when the user is asking about their own fields
type PrivateUserResponse struct {
// fields with struct tags
}
func (u *User) ToPrivateUserResponse() *PrivateUserResponse { ... }
// Response type used when the user is being listed in a public directory
type PublicUserResponse struct {
// fields with struct tags
}
func (u *User) ToPublicUserResponse() *PublicUserResponse { ... }
Поскольку конфигурация ключа JSON обрабатывается тегами структуры, библиотека не подходит для обработки уникальных случаев бизнес-логики, которыевозникают при решении этой проблемы.Возможно, вам удастся найти генератор кода, который решает эту проблему более общим образом, но я бы порекомендовал просто написать сами структуры - Go предпочитает явное и понятное поведение.