Вы можете реализовать интерфейс TextUnmarshaler
, пакет schema
будет использовать этот интерфейс вместо выполнения процедуры по умолчанию, что позволяет настраивать демаршалинг.
1. Объявите тип с именем и используйте его в качестве типа поля Attachments
. []StoredAttachment
не названо. Так, например:
type AttachmentList []StoredAttachment
Почему? Потому что методы могут быть объявлены только для именованных типов.
2. Реализация интерфейса TextUnmarhsaler
и выполнение там разборки json.
func (ls *AttachmentList) UnmarshalText(text []byte) (err error) {
return json.Unmarshal(text, (*[]StoredAttachment)(ls))
}
Вот и все.
https://play.golang.org/p/t65mI7JRFfS