1 回答

TA贡献1808条经验 获得超4个赞
首先你需要告诉encoding/json
跳过父字段,你可以用json:"-"
标签来做到这一点。
然后在解组过程中,在加载父项的所有子项后,循环遍历子项并设置它们的父项,您可以通过实现接口将此作为解组过程的一部分json.Unmarshaler
。
type Mcloud struct {
Projects map[string]*Project `json:"Projects"`
Workdir string
}
type Project struct {
Name string
Networks map[string]Network
Parent *Mcloud `json:"-"` // ignore on un/marshal
TFC TFConf
}
func (m *Mcloud) UnmarshalJSON(data []byte) error {
type tmp Mcloud
if err := json.Unmarshal(data, (*tmp)(m)); err != nil {
return err
}
// set Parent of all projects
for _, p := range m.Projects {
p.Parent = m
}
return nil
}
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报