Marshal() takes a value as input and returns JSON encoded as a byte slice on success or an error if something goes wrong.
func Marshal(v interface{}) ([]byte, error)