code: func (r *Row) MarshalJSON() ([]byte, error) {
  	var o struct {
  		Attrs   map[string]interface{} `json:"attrs"`
  		Columns []uint64               `json:"columns"`
  		Keys    []string               `json:"keys,omitempty"`
  	}
  	o.Columns = r.Columns()
  	o.Keys = r.Keys
  
  	o.Attrs = r.Attrs
  	if o.Attrs == nil {
  		o.Attrs = make(map[string]interface{})
  	}
  
  	return json.Marshal(&o)
  }
docs: // MarshalJSON returns a JSON-encoded byte slice of r.