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 關注
- 123 瀏覽
添加回答
舉報