Seattle and San Diego made the deal on Tuesday.
Johnson had been designated for assignment by the Mariners on Dec. 13 after the Mariners signed designated hitter Jack Cust and needed a spot on the 40-man roster.
Johnson was Seattle's opening day starter behind the plate in 2010 but his struggles at the plate eventually led to his demotion to Triple-A Tacoma. The 28-year-old Johnson played in 61 games last season with Seattle, but hit .191.
He also struggled with an American League-high nine passed balls in less than a half-season.
Johnson never played for the Mariners after Aug. 1. In 18 games at Tacoma, Johnson hit .297.
Johnson was originally the Mariners' fourth-round pick in 2004 and played parts of four seasons in Seattle.