Я создаю API для обработки данных XML в POST и возвращаю его в ответе. Функция, которая должна обрабатывать этот маршалинг, получает переменные данные типа map[string]interface{}
, который выглядит следующим образом (если вы регистрируете его на консоли):
map[lala:success blabla:0xc42011e700 status:true]
Репликация шагов, которые работали для маршалинга JSON или попытки следовать документации, поставила меня в тупик. Вот код, который у меня есть:
type Map map[string]interface{}
type xmlMapEntry struct {
XMLName xml.Name
Value string `xml:",chardata"`
}
func (m Map) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
for k, v := range m {
e.Encode(xmlMapEntry{XMLName: xml.Name{Local: k}, Value: v})
}
return e.EncodeToken(start.End())
}
Я попал в тупик, когда вернулась строка e.Encode: cannot use v (type interface {}) as type string in field value: need type assertion