我有一个可以输出为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"`
}
答案 0 :(得分:52)
Go标签以空格分隔。来自the manual:
按照惯例,标记字符串是可选的空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由空格(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"`
}