Danielson played for the fourth tier football club IFK Eskilstuna until he successfully trialed for top tier club Helsingborgs IF in the summer of 2007.[2] At Helsingborgs IF he struggled to break into the first team and the club allowed him a free transfer to third tier club Västerås SK on 27 July 2009.[3]
Västerås SK
Danielson gained considerably more playing time at Västerås SK and by the 2010 league season he was integral part of the team that won the division title and promotion into the Superettan.[4] The club struggled in the second tier and at the end of the 2011 league season they were relegated.[5] While at Västerås, Danielson played center back alongside his future Sweden international teammate Victor Nilsson Lindelöf.[6]
GIF Sundsvall
On 8 February 2012, Danielson transferred to newly promoted top tier club GIF Sundsvall for the start of the 2012 Allsvenskan.[7] He made his league debut on 31 March 2012 in a 1–0 defeat to Kalmar FF.[8] The club were relegated at the end of the season after losing a relegation play-off to Halmstads BK.[9] Danielson remained at the club, which finished runners-up in the 2014 Superettan and were promoted back into Allsvenskan.[10]
Djurgårdens IF
On 12 February 2018, Danielson signed for top tier club Djurgårdens IF.[11] He made his league debut in the first game of the campaign on 1 April 2018 against Östersunds FK, scoring the only goal of the game.[12]
On 28 February 2020 Danielson became Djurgården's most expensive outbound transfer ever, when he was sold to the Chinese club Dalian Professional for more than 50 million SEK.[15]
He made his debut for Dalian on 26 July 2020, scoring a goal in a 2–3 loss to Shandon Luneng.[16] In his second game for the club, he picked up a red card when conceding a penalty in a 1–1 draw against Henan Jianye.[17]
International career
Youth
Danielson represented the Sweden U17 and U19 teams a total of 5 times between 2006 and 2007.[18]
Senior
On 7 October 2019, Danielson was called up by to the Sweden national team squad for the UEFA Euro 2020 qualifying games against Malta and Spain as a replacement for the injured central defender Pontus Jansson.[19] He scored from a corner ten minutes into his debut, in what ended up as a 4–0 victory for Sweden over Malta.[20] On 14 November 2020, he scored his second international goal in a 2–1 win against Croatia in the 2020–21 UEFA Nations League A, though he also scored an own goal against the same opponent, which contributed to Sweden's eventual relegation.[21] He scored his third international goal in a friendly with Armenia on 5 June 2021.[22]
UEFA Euro 2020
He was named in Sweden's UEFA Euro 2020 squad in May 2021, and started in all three group stage games alongside Victor Lindelöf as a centre back.[22] On 29 June 2021, Danielson was sent off in the Round of 16 game against Ukraine following a foul on Artem Besyedin as Sweden was eliminated in extra-time.[23]