Теги XML и JSON для структуры Golang?
У меня есть приложение, которое может выводиться как JSON или XML в зависимости от заголовков HTTP-запросов. Я могу добиться правильного вывода либо путем добавления правильных тегов к используемым структурам, но я не могу понять, как указать теги для JSON и XML.
Например, это сериализуется для исправления XML:
type Foo struct {
Id int64 `xml:"id,attr"`
Version int16 `xml:"version,attr"`
}
... и это порождает правильный JSON:
type Foo struct {
Id int64 `json:"id"`
Version int16 `json:"version"`
}
... но это тоже не работает:
type Foo struct {
Id int64 `xml:"id,attr",json:"id"`
Version int16 `xml:"version,attr",json:"version"`
}
Ответы
Ответ 1
Теги Go разделены пробелами. Из руководство:
По соглашению, тег-строки являются конкатенацией необязательно разделенных пробелами ключей: пары "значение". Каждый ключ представляет собой непустую строку, состоящую из неконтролируемых символов, отличных от пробела (U + 0020 ''), цитаты (U + 0022 '"') и двоеточия (U + 003A ':'). Каждое значение цитируется используя символы U + 0022 '' 'и синтаксис строкового литерала Go.
Итак, вы хотите написать:
type Foo struct {
Id int64 `xml:"id,attr" json:"id"`
Version int16 `xml:"version,attr" json:"version"`
}