code: func (i *IpamInfo) UnmarshalJSON(data []byte) error {
  	var (
  		m   map[string]interface{}
  		err error
  	)
  	if err = json.Unmarshal(data, &m); err != nil {
  		return err
  	}
  	i.PoolID = m["PoolID"].(string)
  	if v, ok := m["Meta"]; ok {
  		b, _ := json.Marshal(v)
  		if err = json.Unmarshal(b, &i.Meta); err != nil {
  			return err
  		}
  	}
  	if v, ok := m["IPAMData"]; ok {
  		if err = json.Unmarshal([]byte(v.(string)), &i.IPAMData); err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // UnmarshalJSON decodes json message into PoolData