2013-11-10 2 views
22

У меня есть приложение, которое может выводиться как JSON или XML в зависимости от заголовков HTTP-запросов. Я могу добиться правильного вывода либо путем добавления правильных тегов к используемым структурам, но я не могу понять, как указать теги для JSON и XML.XML и JSON-теги для структуры Golang?

Например, это упорядочивает исправить 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"` 
} 

ответ

40

Идентификаторы Go разделены пробелами. От the manual:

По соглашению теговые строки являются конкатенацией необязательно разделенного пробелом ключа: пары «значение». Каждый ключ представляет собой непустую строку, состоящую из неконтролируемых символов, отличных от пробела (U + 0020 ''), цитаты (U + 0022 '"') и двоеточия (U + 003A ':'). Каждое значение цитируется используя символы U + 0022 '' 'и Go string literal.

Итак, что вы хотите написать это:

type Foo struct { 
    Id   int64  `xml:"id,attr" json:"id"` 
    Version  int16  `xml:"version,attr" json:"version"` 
} 
+0

Отлично, спасибо. – magneticMonster

+0

Можем ли мы использовать два тега json, разделенные пробелом? –

+0

@MayankPatel No. Теги считываются последовательно, и возвращается первый соответствующий тег. –

Смежные вопросы