Johnson graduated from Mooresville High School in Mooresville, North Carolina in 2000. As a high school baseball player he was named an honorable mention on the 2000 USA Today All-USA high school baseball team.[1] Johnson entered the 2000 Major League Baseball draft and was selected by the Detroit Tigers in the 11th round.[2] Johnson reported to the Rookie-level Gulf Coast Tigers, where he went 3-1 with an ERA of 4.15. Toward the end of the season, the Tigers promoted Johnson to the Single-A Oneonta Tigers in the New York–Penn League, where he went 0-1 with a 2.89 ERA.[3]
Johnson opened the 2001 season with Oneonta, where he went 7-1 in twelve starts with a 3.42 ERA before being promoted to the Single-A West Michigan Whitecaps in late August.[4] Johnson finished out the Whitecaps season, going 1-1; he also played a few games for the Single-A Lakeland Flying Tigers. Johnson returned to the Whitecaps for the 2002 season, and posted a 4.26 ERA before being promoted (again) to Lakeland and then, later in the season, the Double-A Erie SeaWolves. At Erie, Johnson went 6-1 with a 3.88 ERA; opening there in the 2003 season he was off to a strong start before being sidelined by a shoulder injury.[3][5]
Johnson spent a shortened 2004 season back at Lakeland, where he went 3-6 with an ERA of 4.67. His highlight performance occurred on July 30, when he threw six shutout innings in a 9-1 victory over the St. Lucie Mets.[6] Over 2005 and 2006, Johnson continued to alternate between Lakeland and Erie, with mixed results. In 2007, he finally reached the Triple-A Toledo Mud Hens, going 3-3 with an ERA of 3.44 in 39 appearances; for the first time mostly in a relief role.[3] He became a free agent at the end of the 2008 season.
After electing free agency, Johnson signed a minor league contract with the Houston Astros.
Johnson spent the first half of the 2009 season with the Triple-A Round Rock Express, where he was 5-8 with a 3.51 ERA. Johnson both started (13 starts) and worked out of the bullpen (eight appearances).
Johnson signed with LG Twins of the KBO League on July 21, 2009.[7] Johnson made five starts for the Twins, compiling a 1-2 record and 5.28 ERA with 26 strikeouts over 29 innings of work.
On April 7, 2010, Johnson signed a contract to return to the Houston Astros organization, and was assigned to the team's Double-A affiliate, the Corpus Christi Hooks.