一尘不染

是否可以使用带有多个JSON标签的结构?

go

我将请求发布到服务器并获得JSON格式的回复。我可以将其解组为一个结构。然后,我需要使用相同的数据但使用不同的JSON标签创建一个新的JSON文件。

例:

在以下代码中,我{"name":"Sam","age":20}从服务器获取并将其解组到struct Foo

type Foo struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

然后我需要将标签更改nameemployee_name并省略age

type Bar struct {
    Name string `json:"employee_name"`
    Age  int    `json:"-"`
}

之后,我将修改后的数据发送到另一台服务器。

我知道我可以创建一个新的Bar并将所有数据复制到其中,但是有很多字段。我想知道是否有办法像这样附加多个JSON标签:

type Foo struct {
    Name string `json:"name" json:"employee_name"`
    Age  int    `json:"age" json:"-"`
}

提前致谢。


阅读 239

收藏
2020-07-02

共1个答案

一尘不染

这是不可能的。该encoding/json包只处理json在结构标记关键。如果json键多次列出(如您的示例中所示),则将使用第一个匹配项(在中实现StructTag.Get())。

请注意,这是该encoding/json软件包的实现限制,而不是Go
的实现限制。人们可以很容易地创建一个类似JSON编码包支持多个任一代码键(例如json1json2)或相同的键的多次出现(如在你的例子)。

2020-07-02