After playing for two local clubs and Västra Frölunda IF, he joined IFK Göteborg in 2005. After initially not featuring regularly, he firmly established himself as the club's first-choice right back, starting at that position in 24 out of 26 Allsvenskan matches in 2007 as the club won the Allsvenskan title. During the 2009 season Johansson also started games at left back. In December 2010, he was targeted by English club Sunderland and Italian club Fiorentina for transfer, but stayed with Göteborg.
Johansson signed with Major League Soccer club Seattle Sounders FC on 29 December 2011 to replace James Riley at right back. He contacted Swedish personnel in MLS, including New York Red Bulls coach Hans Backe and former Sounders midfielder Erik Friberg, about the league prior to signing, and joined the team in Arizona for training in January 2012. The Swedish defender made his Seattle debut during 2-1 win over Santos Laguna in a CONCACAF Champions League quarterfinal fixture on 8 March 2012. He made his MLS league debut on 17 March in a 3-1 win against Toronto at CenturyLink Field. He didn't regularly start games until July due to a hamstring injury, when he provided 2 assists in a 2-2 draw against the New York Red Bulls. Johansson didn't play in any of the Sounders' U.S. Open Cup matches, and played one minute of the 2012–13 Champions League at the end of a 3-1 win over Caledonia AIA in August. Johansson played all 4 games in the MLS Cup playoffs, conceding a penalty against the Los Angeles Galaxy for a handball on Robbie Keane in a 2-1 win in the Conference Final, which the Sounders lost 4-2 on aggregate. Johansson was waived by Seattle on 19 March 2013.
International career
Johansson previously played in the Swedish national under-21 team for 3 years before making his senior debut as left back on 24 January 2009 in a 3-2 loss to United States at the Home Depot Center, tripping Marvell Wynne to concede a penalty in the 40th minute. He played his first World Cup qualifier in a scoreless draw against Portugal on 28 March 2009 in Porto. Johansson went on to play two more qualifiers in June, a 1-0 loss to Denmark and a 4-0 win over Malta, as Sweden failed to qualify for the 2010 FIFA World Cup. Johansson was not called up to the national team in 2010 for friendlies or Euro 2012 qualifying, but he started a 2-1 win over Botswana on 19 January 2011, and was an unused substitute in a 1-1 draw with the South African development team2 days later. The Swedish defender also played a full match in a 2-0 win over Cyprus on 8 February, but did not play in a 1-1 draw and subsequent penalty shootout loss against Ukraine. Johansson was not selected to play in Euro 2012 qualifying in 2011 and did not play until 2012, where he started in a 2-0 friendly win over Bahrain and came on as a halftime substitute in a 5-0 win over the Qatari under-23 team in January. He was not called up to Sweden's squad for Euro 2012, where they finished last in their group. Johansson came on in the 20th minute as a substitute for the injured Mikael Lustig during a 1-0 friendly win over China on 6 September. During September and October, he was an unused substitute in three 2014 World Cup qualifiers: a 2-0 win over Kazakhstan, a 2-1 win over Faroe Islands, and a 4-4 draw with Germany. Johansson was called up to appear in the 2013 King's Cup in Thailand and played in a 1-1 semifinal draw with North Korea, as won on penalties, and the 3-0 win over Finland in the final on 26 January. He played 30 minutes in a friendly against Argentina in February 2013.