Golang结构的XML和JSON标记?

时间:2013-11-10 01:14:44

标签: xml json encoding go

我有一个可以输出为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"`
}

1 个答案:

答案 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"`
}