code: func (c *ButtonComponent) UnmarshalJSON(data []byte) error {
  	type alias ButtonComponent
  	raw := struct {
  		Action rawAction `json:"action"`
  		*alias
  	}{
  		alias: (*alias)(c),
  	}
  	if err := json.Unmarshal(data, &raw); err != nil {
  		return err
  	}
  	c.Action = raw.Action.Action
  	return nil
  }
docs: // UnmarshalJSON method for ButtonComponent