Johnson was drafted by the Minnesota Timberwolves with the 4th pick in the 2010 NBA draft. On March 18, 2011, Johnson scored a career-high 29 points on 11-for-21 shooting in a loss against the Los Angeles Lakers. On July 27, 2012, Johnson was traded to the Phoenix Suns in a three-team deal. In his first game with the Suns, Johnson scored a three-pointer in a close victory against the Detroit Pistons. Johnson would not gain significant playing time with the Suns until Lindsey Hunter took over as head coach for the team. On February 26, 2013, Johnson recorded 14 points, along with 9 rebounds, 3 assists, and 2 steals in an 84–83 victory against his former team, the Minnesota Timberwolves. A day later, Johnson made a game-tying three-pointer from a long pass by Jermaine O'Neal that helped the Suns win 105–101 in overtime against the San Antonio Spurs. On March 1, 2013, Johnson scored a season high 15 points and added six rebounds and two steals in a 92–87 victory against the Atlanta Hawks. On July 15, 2013, Johnson signed a one-year deal with the Los Angeles Lakers. In his first season with the Lakers, Johnson averaged career highs in points, rebounds, steals and blocks. He was one of only eight players in the league to average at least 1 block and 1 steal per game, and the only perimeter player to do so. He had four games where he scored 20 or more points, the most since his rookie season. On November 29, 2013, Johnson recorded 27 points, along with 6 rebounds and 3 blocks, in a 106–102 victory against the Detroit Pistons. He tallied four double-doubles over the course of the season, a career high. On July 28, 2014, Johnson re-signed with the Lakers on a one-year deal. On July 9, 2015, Johnson signed a one-year deal with the Los Angeles Clippers. He made his debut for the Clippers in the team's season opener against the Sacramento Kings on October 28, recording 3 points and 1 steal in a 111–104 win. On July 8, 2016, Johnson re-signed with the Clippers. On October 15, 2018, Johnson was traded to the New Orleans Pelicans in exchange for Alexis Ajinça. On February 7, 2019, Johnson was traded to the Washington Wizards in exchange for Markieff Morris and a 2023 second-round pick. On April 5, 2019, Johnson was waived by the Wizards.