我有一个应用程序,可以根据HTTP请求标头输出为JSON或XML。我可以通过将正确的标签添加到我正在使用的结构中来实现正确的输出,但是我不知道如何为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"` }
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"` }