是否可以像代码中那样对单个标签使用多个标签值

type XMLStruct struct {

    Name    string  `json:"name" json:"FirstName"`

    Date    string  `xml:"Date" xml:"pudDate"`

}


至尊宝的传说
浏览 112回答 4
4回答

RISEBY

我要说不,不是这样。你可以这样做,type XMLStruct struct {    Name    string  `json:"name" xml:"name"`    Date    string  `json:"Date" xml:"Date"`}或这个,type XMLStruct struct {    Name        string  `json:"name, omitempty" xml:"name, omitempty"`    Date        string  `json:"Date, omitempty" xml:"Date, omitempty"`    FirstName   string  `json:"FirstName, omitempty" xml:"FirstName, omitempty"`}但我不相信你可以将多个 json 名称映射到一个结构字段,我认为这样做的原因是如果它们都存在于 json 结构中,你会保留哪一个并丢弃等等。

泛舟湖上清波郎朗

对此没有明确的答案。在语言规范级别,结构标签是任意文本,没有固有含义。这意味着,从语言的角度来看,json:"name" json:"FirstName"它是一个有效的标签,就像任何其他任意文本一样。重要的是代码如何解释标签。既然您正在谈论标签json,您可能会关心encoding/json标准库中的包。这里和这里的文档描述了这个包如何解释标签。像这样的重复标签充其量是不明确的,因此可以说它不受支持。尽管使用这样的标签会有所作为。它的作用可能符合也可能不符合您的期望(取决于您的期望)。但可能还有其他包可以解释json标签——可能包括您自己编写的包。他们可以使用任何他们想要的规则,包括允许或禁止多个具有相同名称的标签段。

开心每一天1111

go-struct 的字段标记实际上可以具有任何 UTF-8 序列。这是合法的代码:type XMLStruct struct {     Name string `g1bb3ri$h...T@g` }所以标签是可以解释的。标准库中的包json需要特定格式的标签 - 它将单个结构字段映射到单个 JSON 属性。如果您想支持单个字段的多个属性 - 人们可以编写自己的 Marshal/Unmarshal 并按照这种新的标记格式进行操作。但正如其他一些评论/答案所暗示的那样,存在处理冲突的困境。

MMMHUHU

如果您在 key:"value" 对中有相同的键,则结构标记查找将仅使用您指定的第一个值。所以,你的结构看起来像type XMLStruct struct {    Name    string  `json:"name"`    Date    string  `xml:"Date"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go