Johnson attended Iowa State University from 2008 to 2011. As a freshman in 2008, he set an NCAA record for most kick return yards in a game with 319. During his career he started 43 of 50 games, recording 247 tackles and six interceptions.
On April 30, 2012, the Tampa Bay Buccaneers signed Johnson to a three-year, $1.44 million contract that includes a signing bonus of $5,000. Throughout training camp, Johnson competed for a roster spot as a backup cornerback against E. J. Biggers, Brandon McDonald, Myron Lewis, and Anthony Gaitor. Head coachGreg Schiano named Johnson the fifth cornerback on the depth chart to begin the regular season. He was listed behind Aqib Talib, Eric Wright, Brandon McDonald, and E. J. Biggers. During his rookie campaign he showed great promise when he finished the year with 41 tackles, 1 forced fumble, and 3 interceptions.
2013 season
In his sophomore campaign he improved his tackle stats to 62 tackles but only recorded 1 forced fumble and 1 interception.
2014 season
During his 3rd season he saw transition into a new Tampa 2 system installed by new head coachLovie Smith and defensive coordinator Leslie Fraizer. He was used more in rotation as opposed to a full-time starter and finished his 2014 season with 45 total tackles, 3 forced fumbles, and 1 interception. Johnson was released from the Buccaneers on September 1, 2015 after breaking his leg early in the preseason.
2015 season
On March 10, 2015, the Tampa Bay Buccaneers re-signed Johnson to a one-year deal. On September 1, 2015, Johnson was waived by the Buccaneers. On September 2, 2015, the Buccaneers placed Johnson on season-ending injured reserve. On December 3, 2015, Johnson was waived from the Buccaneers' injured reserve.
On December 9, 2015, Johnson was signed by the New England Patriots. He made his Patriots debut the following week in a 27-6 win over the Houston Texans and recorded two passes defensed. On February 17, 2016, Johnson was released by the Patriots.
Carolina Panthers
On July 14, 2016, Johnson signed with the Carolina Panthers. After starting the season on the reserve/non-football injury list after suffering an Achilles injury in March, Johnson was activated to the active roster on October 28, 2016.
Buffalo Bills
On March 17, 2017, Johnson signed with the Buffalo Bills. He played in 15 games with seven starts, recording 52 tackles and seven passes defensed.