Как уже указывалось, вы должны продублировать поле.Вопрос в том, где должно существовать дублирование.
Если это всего лишь одно поле из множества, одним из вариантов является использование встраивания и затенения полей:
type MyType struct {
Date []string `xml:"value"`
// many other fields
}
Тогда, когда Date
используетдругое имя поля:
type MyOtherType struct {
MyType // Embed the original type for all other fields
Date []string `xml:"anotherValue"`
}
Затем после демаршалирования MyOtherType
легко переместить значение Date
в исходную структуру:
type data MyOtherType
err := json.Unmarshal(..., &data)
data.MyType.Date = data.Date
return data.MyType // will of MyType, and fully populated
Обратите внимание, что это работает толькодля демаршаллинга.Если вам необходимо также упорядочить эти данные, можно использовать аналогичный трюк, но механика вокруг него должна быть полностью изменена.