Johnson debuteerde in 2005 bij Chicago Fire en speelde vanaf het seizoen 2006/2007 bij sc Heerenveen. In het seizoen 2007/2008 werd hij verhuurd aan De Graafschap.
Na de huurperiode werd Johnson teruggehaald naar Heerenveen. Het werd duidelijk dat hij weinig speeltijd zou krijgen in het eerste elftal en hij mocht uitzien naar een andere club. Op 18 augustus maakte de club bekend dat Johnson terugkeertde naar de MLS. Bij welke club hij kwam te spelen werd niet direct gemeld, maar dat bleek Real Salt Lake. Van 2013 tot en met 2015 speelde hij voor Portland Timbers. Eind 2016 verruilde hij Toronto FC voor Orlando City SC.