After going undrafted in the 2009 NBA draft, Johnson joined the New Jersey Nets / Philadelphia 76ers combined team for the 2009 NBA Summer League. He later signed with Aliağa Petkim of Turkey for the 2009–10 season. However, he later left after 2 games. In December 2009, he joined PBG Basket Poznań of Poland but left before appearing in a game for them. On January 8, 2010, he signed with Turów Zgorzelec for the rest of the season.
2010–11 season
On November 1, 2010, Johnson was selected with the 9th overall pick in the 2010 NBA D-League draft by the Dakota Wizards. On January 24, 2011, he signed a 10-day contract with the Portland Trail Blazers. On February 4, 2011, he returned to the Dakota Wizards. On February 24, he signed a 10-day contract with the Boston Celtics. On March 6, 2011, he returned to the Wizards. On March 14, he re-signed with the Portland Trail Blazers for the remainder of the 2010–11 season.
2011–12 season
During the 2011 NBA lockout, Johnson played for and won a championship with Leones de Santo Domingo of the DominicanBasketball League. Following the lockout, he re-joined the Blazers for the 2011–12 season. On March 15, 2012, Johnson was waived by the Trail Blazers. On March 20, he was claimed off waivers by the New Orleans Hornets. On April 18, 2012, he was waived by the Hornets.
2012–13 season
In July 2012, he joined the NBA D-League Select team for the 2012 NBA Summer League. In September 2012, Johnson signed with the Minnesota Timberwolves. However, he was later waived by the Timberwolves on October 27. On December 14, 2012, Johnson was acquired by the Santa Cruz Warriors of the NBA D-League. On January 19, 2013, Johnson signed a 10-day contract with the Minnesota Timberwolves. On January 29, 2013, he signed a second 10-day contract with the Timberwolves. On February 8, 2013, he signed with the Timberwolves for the remainder of the season. On October 26, 2013, he was waived by the Timberwolves.
2013–14 season
In November 2013, Johnson signed with the Zhejiang Lions of China for the 2013–14 season.
2014–15 season
On September 26, 2014, Johnson signed with Miami Heat. However, he was later waived by the Heat on October 13, 2014. In November 2014, he signed with the Zhejiang Golden Bulls as a short-term injury replacement for Charles Gaines. Following the return of Gaines, he left the Golden Bulls in mid-December after appearing in 11 games. On January 20, 2015, Johnson signed with Türk Telekom of Turkey for the rest of the season.
2015–16 season
On September 28, 2015, Johnson signed with the Cleveland Cavaliers. However, he was later waived by the Cavaliers on October 17 after appearing in four preseason games. On February 15, 2016, he signed with Capitanes de Arecibo of the Puerto Rican League.