code: func (cas ColumnAttrSet) MarshalJSON() ([]byte, error) {
  	if cas.Key != "" {
  		return json.Marshal(struct {
  			Key   string                 `json:"key,omitempty"`
  			Attrs map[string]interface{} `json:"attrs,omitempty"`
  		}{
  			Key:   cas.Key,
  			Attrs: cas.Attrs,
  		})
  	}
  	return json.Marshal(struct {
  		ID    uint64                 `json:"id"`
  		Attrs map[string]interface{} `json:"attrs,omitempty"`
  	}{
  		ID:    cas.ID,
  		Attrs: cas.Attrs,
  	})
  }
docs: // MarshalJSON marshals the ColumnAttrSet to JSON such that
  // either a Key or an ID is included.