Sparta Rotterdam Joshua John came through the youth departments of SV Koedijk,
Ajax,
RKC Waalwijk and
Sparta Rotterdam. He made his professional debut on 10 May 2007, coming on as a late substitute for
Marvin Emnes, in a 3–2 loss against
N.E.C. in the play–offs. John made his first appearance of the
2007–08 season in the league match against
Groningen on 29 September 2007, coming on as a substitute for
Sjaak Polak, in a 1–0 loss. It wasn't until on 30 March 2008 when he scored his first professional goal for the club, in a 2–2 draw against
Willem II. Despite being sidelined for most of the season, John went on to make twelve appearances for the side. At the start of the 2008–09 season, John started well when he scored in the opening game of the season, in a 5–2 loss against
ADO Den Haag. He went on to score two more goals by the end of 2008 against
Roda JC and
Ajax. As a result, it was announced in early January 2009 that John signed a contract with the club, keeping him until 2012. John then played a vital role in a match against ADO Den Haag on 11 April 2009 when he assisted twice, in a 2–1 win. John ended his goal drought when he scored against Ajax for the second time this season, in a 4–0 win on 3 May 2009. At the end of the 2008–09, John featured thirty–four times and scoring four times in all competitions. In the 2009–10 season, John struggled to regain his goal scoring form for the side since the start of the season and it wasn't until on 22 December 2009 when he scored his first goal of the season, in a 5–0 win over
VV Baronie in the last 16 of the
KNVB Cup. It wasn't until on 14 February 2010 when he scored his first league goal of the season in a 2–0 win over
VVV-Venlo. He scored again in the last game of the season, in a 3–1 loss against Groningen. Despite being sidelined as the season progressed and saw the club relegated to the Jupiler League, John went on to make thirty–six appearances and scoring three times in all competitions. In the 2010–11 season, John started the season well when he helped the side win the first two matches to the start of the season, in a 12–1 win over
Almere City on 20 August 2010. It wasn't until on 3 September 2010 when John scored, as well as, setting up two goals, in a 3–3 draw against
Fortuna Sittard. He went on to score two more goals by the end of 2010, in a 5–0 win over
Emmen and
Telstar. However, John was sent–off, just 11 minutes after coming on as a substitute, in a 2–1 loss against Emmen on 21 January 2011. It wasn't until on 11 March 2011 when he scored again for the second time this season, in a 3–1 loss against Fortuna Sittard. Although he suffered an injuries during the season, John finished the 2010–11 season, making thirty–one appearances and scoring four times in all competitions. In the 2011–12 season, John scored his first goal of the season, in a 3–2 loss against
Helmond Sport on 12 August 2011. Amid to the start of the season, John was linked a move away from Sparta Rotterdam, with
Premier League side
Swansea City agreed terms for him but the move fell through over wage demands. Throughout September and early–October, John was sidelined with injury and was banned from the first team after a rift with Manager
Michel Vonk. The suspension from the first team last until 13 October 2011. He scored on his return on 23 October 2011, in a 4–1 win over
Go Ahead Eagles and scored two weeks later, on 4 November 2011, in a 6–0 win
AGOVV. However, John received a straight red card after fouling
Sjors Verdellen, in a 2–1 win over
SC Veendam on 9 December 2011, in what turns out to be his last appearance for Sparta Rotterdam. For his action, John was served with a three match suspension.
FC Twente It was announced on 16 January 2012 that John joined
Twente, signing a two–year contract, with an option of extension for another season, alongside
Daniel Fernandes. John made his FC Twente debut five days later, on 21 January 2012, after signing for the club, coming on as a late substitute, in a 5–0 win over
RKC Waalwijk. However, John struggled to established himself at Twente and spent the rest of the season on the substitute bench, making four appearances. At the start of the 2012–13 season, John started well when he scored and set up a goal, in a 6–0 win over
UE Santa Coloma in the first round of the
UEFA Europa League Qualifiers. The club was subsequently through to the next round after beating them 3–0 in the second leg. However, John expected to have his first team opportunities limited. In the 2013–14 season, John returned to the first team at Twente and made his first team appearance for the first time in a year, in a 0–0 draw against RKC Waalwijk in the opening game of the season. However, with four appearances made by the end of August, John's first team opportunities was limited further, leading to his departure from the club.
FC Nordsjælland (loan) On 2 August 2012, it was announced that John joined the Danish Champions side
FC Nordsjælland on a season–long deal. John quickly made an impact for FC Nordsjælland when he scored in the opening game of the season, in a 1–1 draw against
AaB Fodbold. This was followed up by scoring 4 goals in a 6–1 win against
Silkeborg. After adding one more goal to his tally by the end of August, John was named Player of the Month for August. John then scored two goals in two matches between 22 September 2012 and 28 September 2012 against
Randers and
Esbjerg. He then added two more goals against
AGF and
Chelsea in the
UEFA Champions League. Despite a 6–1 defeat on 5 December 2012, John described scoring against Chelsea “as a special moment to score in the Champions League. John then scored, as well as, setting up a goal, in a 2–0 win over AGF on 29 March 2013. However, he suffered an injury that saw him out for the rest of the season. At the end of the 2012–13 season, John returned to his parent club, having made twenty–eight appearances and scoring eleven times in all competitions.
FC Nordsjælland On 2 September 2013, John signed a contract for years with the
Danish Superliga club
FC Nordsjælland. The club were previously keen on signing John on a permanent basis. But throughout the summer, John was previously linked Danish rivals’, such as,
Brøndby and
Copenhagen before moving to Nordsjælland. John scored on his first goal for the club since signing for the club on a permanent basis, in a 2–1 loss against
Midtjylland. Two weeks later, on 30 September 2013, he scored again, in 1–0 win over Randers. He then scored twice on 9 November 2013, in a 3–0 win over
SønderjyskE. John later added two more goals later in the season, against Aalborg BK and
Viborg. Despite missing out for one game, John finished his first full season at the club, making thirty–three appearances and scoring nine times in all competitions. In the 2014–15 season, John missed the start of the season with the club's squad rotation. After returning to the first team, John scored two goals in two matches between 3 August 2014 and 9 August 2014 against Esbjerg and Aalborg BK. John scored twice on 7 March 2015, in a 4–0 win over SønderjyskE, ending his six–months goal drought. After the match, John said he vowed to score more goals. At the end of the 2014–15 season, John went on to make thirty–one appearances and scoring five times in all competitions. In the 2015–16 season, John continued to remain at FC Nordsjælland despite keen on leaving in the summer. However, John was demoted to the substitute bench as a result of failing to leave the club. Subsequently, John suffered an injury that kept him out throughout September. After returning to the first team from injury, John then scored his first goal of the season, in a 3–0 win over Aalborg BK on 25 October 2015. This was followed up by two weeks later on 7 November 2015 when he scored in a 1–0 win over
Hobro. As the 2015–16 season progressed, John went on to score two more goals against AGF and Viborg. He went on to finish the season, making twenty–three appearances and scoring four times in all competitions. Ahead of the 2016–17 season, John continued to express desire to leave the club, stating “it's time for a change”. He later claimed that several Turkish clubs were keen on signing him. Amid the transfer speculation, John scored the opening game of the 2016–17 season, in a 4–0 win over Viborg. He went on to make three appearances for the side at the start of the 2016–17 season before moving to Bursaspor. During his time at FC Nordsjælland, John made 101 appearances and scoring 28 times.
Bursaspor After four years at FC Nordsjælland, John moved to Turkey when he joined
Bursaspor on 15 August 2016. Upon joining Bursaspor, John described the move as a “great opportunity”. John made his Bursaspor debut, where he came on as a second–half substitute for
Tomáš Necid, in a 2–0 loss against
İstanbul Başakşehir on 28 August 2016. This was followed up when he set up a goal for
Pablo Batalla, who scored the only goal of the game, in a 1–0 win over
Fenerbahçe. However, John's season at Bursaspor was plagued by injuries throughout the 2016–17 season. It wasn't until on 4 March 2017 when he scored his first goal for the club, in a 2–1 win over
Gaziantepspor. In his first season at Bursaspor, John went on to make twenty–seven appearances and scoring once in all competitions.
FC Kaisar On 8 January 2019, John joined
FC Kaisar in the
Kazakhstan Premier League.
VVV-Venlo In September 2020 John returned to the
Eredivisie with
VVV-Venlo on a one-year contract with the option for a second year. Upon their relegation to the
Eerste Divisie at the end of the
season, Venlo opted not to extend his contract. ==International career==