我有一个可以根据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,json:"version"` }
Go标签是空格分隔的。从
@L_502_0@:
By convention,tag strings are a concatenation of optionally space-separated key:”value” pairs. Each key is a non-empty string consisting of non-control characters other than space (U+0020 ‘ ‘),quote (U+0022 ‘”‘),and colon (U+003A ‘:’). Each value is quoted using U+0022 ‘”‘ characters and Go string literal Syntax.
所以,你想写的是:
type Foo struct { Id int64 `xml:"id,attr" json:"id"` Version int16 `xml:"version,attr" json:"version"` }