我将请求发布到服务器并获得JSON格式的回复。我可以将其解组为一个结构。然后,我需要使用相同的数据但使用不同的JSON标签创建一个新的JSON文件。
例:
在以下代码中,我{"name":"Sam","age":20}从服务器获取并将其解组到struct Foo:
{"name":"Sam","age":20}
Foo
type Foo struct { Name string `json:"name"` Age int `json:"age"` }
然后我需要将标签更改name为employee_name并省略age:
name
employee_name
age
type Bar struct { Name string `json:"employee_name"` Age int `json:"-"` }
之后,我将修改后的数据发送到另一台服务器。
我知道我可以创建一个新的Bar并将所有数据复制到其中,但是有很多字段。我想知道是否有办法像这样附加多个JSON标签:
Bar
type Foo struct { Name string `json:"name" json:"employee_name"` Age int `json:"age" json:"-"` }
提前致谢。
这是不可能的。该encoding/json包只处理json在结构标记关键。如果json键多次列出(如您的示例中所示),则将使用第一个匹配项(在中实现StructTag.Get())。
encoding/json
json
StructTag.Get()
请注意,这是该encoding/json软件包的实现限制,而不是Go 的实现限制。人们可以很容易地创建一个类似JSON编码包支持多个任一代码键(例如json1,json2)或相同的键的多次出现(如在你的例子)。
json1
json2