code: func (s *Surface) MarshalJSON() ([]byte, error) {
  	return json.Marshal(map[string]interface{}{
  		"bound":  s.bound,
  		"values": s.Grid,
  	})
  }
docs: // MarshalJSON enables surfaces to be encoded as JSON using the encoding/json package.