Как упорядочить XML из интерфейса map [string] {}? - PullRequest
0 голосов
/ 15 января 2019

Я создаю 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

1 Ответ

0 голосов
/ 15 января 2019

решаемая. ответ: во-первых, моя структура VALUE была типа string вместо interaface, а во-вторых, чтобы увидеть анализ данных, мне пришлось фактически его упорядочить .. используя: x, _ := xml.MarshalIndent(Map(data), "", " ")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...