为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
至尊宝的传说 2023-07-17 16:36:10
type XMLStruct struct {    Name    string  `json:"name" json:"FirstName"`    Date    string  `xml:"Date" xml:"pudDate"`}
查看完整描述

4 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

我要说不,不是这样。


你可以这样做,


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 结构中,你会保留哪一个并丢弃等等。


查看完整回答
反对 回复 2023-07-17
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

对此没有明确的答案。在语言规范级别,结构标签是任意文本,没有固有含义。这意味着,从语言的角度来看,json:"name" json:"FirstName"它是一个有效的标签,就像任何其他任意文本一样。

重要的是代码如何解释标签。既然您正在谈论标签json,您可能会关心encoding/json标准库中的包。这里和这里的文档描述了这个包如何解释标签。像这样的重复标签充其量是不明确的,因此可以说它不受支持。尽管使用这样的标签会有所作为。它的作用可能符合也可能不符合您的期望(取决于您的期望)。

但可能还有其他包可以解释json标签——可能包括您自己编写的包。他们可以使用任何他们想要的规则,包括允许或禁止多个具有相同名称的标签段。


查看完整回答
反对 回复 2023-07-17
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

go-struct 的字段标记实际上可以具有任何 UTF-8 序列。这是合法的代码:

type XMLStruct struct {
    Name string `g1bb3ri$h...T@g`
}

所以标签是可以解释的。标准库中的包json需要特定格式的标签 - 它将单个结构字段映射到单个 JSON 属性。

如果您想支持单个字段的多个属性 - 人们可以编写自己的 Marshal/Unmarshal 并按照这种新的标记格式进行操作。但正如其他一些评论/答案所暗示的那样,存在处理冲突的困境。


查看完整回答
反对 回复 2023-07-17
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

如果您在 key:"value" 对中有相同的键,则结构标记查找将仅使用您指定的第一个值。


所以,你的结构看起来像


type XMLStruct struct {

    Name    string  `json:"name"`

    Date    string  `xml:"Date"`

}

查看完整回答
反对 回复 2023-07-17
  • 4 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信