He played college football at NC State and was selected by the San Francisco 49ers in the fourth round of the 2014 NFL draft.
He was also a member of the Seattle Seahawks, Buffalo Bills, Arizona Cardinals, Kansas City Chiefs, and Los Angeles Chargers.
[5] During his junior season, Johnson was selected ACC Defensive Back of the Week for his performance against Wake Forest on November 12, 2012.
On March 24, 2014, he chose to participate at NC State's pro day, but opted to only perform positional drills for NFL team representatives and scouts.
[13] Head coach Jim Harbaugh named Johnson the fifth cornerback on the depth chart, behind veterans Brock, Culliver, Cox, and Chris Cook.
[14] He made his professional regular season debut in the 49ers' season-opener at the Dallas Cowboys and recorded two solo tackles and two pass deflections in their 28–17 victory.
On December 14, 2014, he earned his first career start and recorded four combined tackles and deflected a pass in a 17–7 loss at the Seattle Seahawks.
Johnson returned to training camp in 2015 to compete with Brock, Shareece Wright, Chris Cook, Leon McFadden, Acker, and Keith Reaser for the starting cornerback position.
[18] On November 8, 2015, Johnson received his first start of the season and recorded a season-high six solo tackles and two pass deflections during a 17–16 victory over the Atlanta Falcons.
Johnson competed with Brock, Jimmie Ward, Chris Davis, Acker, Keith Reaser, and Rashard Robinson through training camp for the starting cornerback position.
[16] His production fell under head coach Chip Kelly and defensive coordinator Jim O'Neil in 2016 and Johnson finished the season with 15 combined tackles (11 solo) and three pass deflections in 15 games and zero starts.
Johnson returned to 49ers' training camp in 2017 and competed with Rashard Robinson, Keith Reaser, Ahkello Witherspoon, and K'Waun Williams for the job as the starting cornerback.
Head coach Kyle Shanahan named Johnson the starting cornerback, along with Robinson and Williams as nickelback, to begin the 2017 season.
[16] On December 24, 2017, Johnson made his second career interception after picking off a pass attempt by Blake Bortles and returning it for a 50-yard touchdown during a 44–33 win over the Jacksonville Jaguars.