Johnson takes no-hit bid into 8th, Marlins win