In 2006, Johnson pitched for the Lowell Spinners. In November 2006, Baseball America named Johnson the #9 prospect in Boston's organization. In 2007, he pitched for the Lancaster JetHawks. In 2008 Baseball America ranked him as Boston's fourth best pitching prospect. He spent the 2008 season at the Red Sox's AA affiliate, the Portland Sea Dogs. He threw a 3.63 ERA for the year. Coming into 2009, he was ranked within the top 20 prospects within the Red Sox system. He split the 2009 season between the Red Sox AAA affiliate, the Pawtucket Red Sox and the Portland Sea Dogs. He amassed a 3-16 record with a 6.35 ERA, and led the minors with most losses. He spent the 2010 season with Pawtucket. He returned to Pawtucket to start the 2011 season, however, on May 14, 2011, Johnson gave up 7 runs in 2 innings, leaving him with a 12.63 ERA for Pawtucket. He was released on May 17, 2011. Johnson signed with the Kansas City T-Bones on June 11, 2011. His 3.23 ERA for the T-Bones was 4th in the American Association. Johnson signed with the Pittsburgh Pirates in December 2011. Johnson split the 2012 season with the Altoona Curve and the Indianapolis Indians. Johnson re-signed with the Pirates in September 2012.
Pittsburgh Pirates
On August 18, 2013, Johnson was added to the Pirates 25-man roster. He made his major league debut that day against the Arizona Diamondbacks, entering the game to start the top of 11th inning. He pitched 6 innings, but allowed two runs in the 16th and took the loss. Johnson was the first Pirate since Steve Blass in 1964 to throw at least 5 innings of relief in his first appearance. He was optioned back to Indianapolis on August 19. Johnson spent most of the 2013 season at Indianapolis, making 26 appearances, a 10-4 record, and a 2.39 ERA in innings pitched. On September 1, Johnson made his first start for the Pirates against the Cardinals. He pitched two innings, giving up five runs on seven hits.
Johnson's contract was sold to the Hiroshima Toyo Carp of Nippon Professional Baseball on October 22, 2014. With Hiroshima in 2015, Johnson started 28 games and put together a 14-7 record with a 1.85 ERA and a 1.09 WHIP. His ERA mark led the Central League and his 14 wins ranked tied for second behind only teammate Kenta Maeda, who signed with the Los Angeles Dodgers after the season. After beginning the 2016 season strongly, Johnson signed a three-year extension in June to remain with the Hiroshima Toyo Carp beyond the current year. On October 24, 2016, Johnson became the first foreign pitcher since Gene Bacque in to win the Eiji Sawamura Award following a season including a 15-7 record, a 2.15 ERA and 141 strikeouts in innings.