code: func (f IfFunc) MarshalJSON() ([]byte, error) {
  	return json.Marshal(struct {
  		FnIf []interface{} `json:"Fn::If"`
  	}{FnIf: []interface{}{f.Condition, f.ValueIfTrue, f.ValueIfFalse}})
  }
docs: // MarshalJSON returns a JSON representation of the object