2 回答
TA贡献1873条经验 获得超9个赞
考虑到两个感兴趣的自定义字段,您可能最终会得到类似的结果,但如果您只需要名称,则可以进一步缩减结构。
type AutoGenerated struct {
Fields struct {
Customfield11343 struct {
Self string `json:"self"`
Name string `json:"name"`
Key string `json:"key"`
EmailAddress string `json:"emailAddress"`
DisplayName string `json:"displayName"`
Active bool `json:"active"`
TimeZone string `json:"timeZone"`
} `json:"customfield_11343"`
Customfield12046 []struct {
Self string `json:"self"`
Value string `json:"value"`
ID string `json:"id"`
} `json:"customfield_12046"`
} `json:"fields"`
}
您得到的效果是,提要中的所有额外信息都被丢弃,但您可以非常干净地获得所需的数据。
TA贡献1780条经验 获得超5个赞
这是一个困难的问题,因为第二个是数组形式。这使得使用地图变得困难。
对于第一个,使用起来很简单:
type JiraCustomField struct {
Self string `json:"self"`
Name string `json:"name"`
Key string `json:"key"`
EmailAddress string `json:"emailAddress"`
DisplayName string `json:"displayName"`
Active bool `json:"active"`
TimeZone string `json:"timeZone"`
}
type JiraPayload struct {
Expand string `json:"expand"`
ID string `json:"id"`
Key string `json:"key"`
Fields map[string]JiraCustomField `json:"fields"`
}
https://play.golang.org/p/y8-g6r0kInV
具体来说,这部分Fields map[string]JiraCustomField
对于第二种情况,看起来您需要以数组形式(例如Fields map[string][]JiraCustomField
.
在这种情况下,我认为您需要制作自己的解组器。
您可以使用自定义 Unmarshal/marshaler 执行的操作是使用 Reflection 包并检查它是数组还是结构。如果它是一个结构体,则将其放入数组中,并将其存储在Fields map[string][]JiraCustomField
.
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报