есть структура
type Data struct {
CompanyType string `json:"company_type"`
Sum string `json:"sum"`
Users []struct{
FIO string `json:"fio"`
Date string `json:"date"`
} `json:"users"`
}
Мне приходят данные со стороннего сервиса, и иногда, Users приходит не как слайс структур, а как одна структура. При анмаршилинге это естественно вызывает ошибку, т.к. ожидается именно слайс. Как поступить в данном случае? Думаю что надо копать в сторону кастомного анмаршела, но пока не понял как это делается
Плохой сторонний сервис :) Можно на структуре реализовать интерфейс с сигнатурой UnmarshalJSON(data []byte) error После этого сделать анмаршал в пустой интерфейс и при помощи reflect.ValueOf(v) определить reflect.Slice это или просто reflect.Struct . А уже исходя из этого при помощи рефлексии обрабатывать эти 2 кейса Вот хороший пример https://gist.github.com/ik5/a4521a4166302efecc3d3f8ea8080912
Пожалуй самая медленная и подверженная багам реализация из возможных😀
Обсуждают сегодня