1 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先你需要告訴encoding/json
跳過父字段,你可以用json:"-"
標(biāo)簽來做到這一點(diǎn)。
然后在解組過程中,在加載父項(xiàng)的所有子項(xiàng)后,循環(huán)遍歷子項(xiàng)并設(shè)置它們的父項(xiàng),您可以通過實(shí)現(xiàn)接口將此作為解組過程的一部分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 關(guān)注
- 133 瀏覽
添加回答
舉報(bào)