Подтвердить что ты не робот

Теги 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"`
}
4b9b3361

Ответ 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"`
}