Вы можете пометить поле UUID вашего объекта (структуры) с помощью json:"-"
, чтобы оно было исключено из процесса маршалинга / демаршалинга, например:
type User struct {
Name string `json:"name"`
UUID string `json:"-"`
}
Если вам нужно маршалировать / анмаршалироватьполе UUID тоже в других местах вашего приложения, тогда самым простым решением было бы сохранить поле UUID перед демаршалингом, а затем восстановить его после маршалинга, например:
u := getUser() // acquire your object
uuid := u.UUID // save field
err := json.Unmarshal(data, &u)
// handle error
u.UUID = uuid // restore field
Обернуть его в служебную функцию,так что вы можете использовать его повторно:
func decodeUser(u *User, data []byte) error {
uuid := u.UUID // save field
if err := json.Unmarshal(data, &u); err != nil {
return err
}
u.UUID = uuid // restore field
return nil
}
Обратите внимание, что существуют сторонние библиотеки для отображения карт в значениях стояков (например, github.com/mitchellh/mapstructure
), но сначала демонтирование в карту, а затем отображениеэто в структуру значительно медленнее, чем демаршалирование в значение структуры и сохранение / восстановление одного поля.