code: func (f JoinFunc) MarshalJSON() ([]byte, error) {
  	return json.Marshal(struct {
  		FnJoin []interface{} `json:"Fn::Join"`
  	}{FnJoin: []interface{}{f.Separator, f.Items}})
  }
docs: // MarshalJSON returns a JSON representation of the object