Joshua John came through the youth departments of SV Koedijk, Ajax, RKC Waalwijk and Sparta Rotterdam.
[4] 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.
[11] 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.
[16] Despite being sidelined as the season progressed and saw the club relegated to the Jupiler League,[17][18][19] John went on to make thirty–six appearances and scoring three times in all competitions.
[33] 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.
[35] 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.
[36] 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.
[37] However, John struggled to established himself at Twente and spent the rest of the season on the substitute bench, making four appearances.
[41] 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.
[42][43] On 2 August 2012, it was announced that John joined the Danish Champions side FC Nordsjælland on a season–long deal.
[44] 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.
[54] 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.
[55][56] On 2 September 2013, John signed a contract for 3+1⁄2 years with the Danish Superliga club FC Nordsjælland.
[58] But throughout the summer, John was previously linked Danish rivals’, such as, Brøndby[59] and Copenhagen before moving to Nordsjælland.
[65] Despite missing out for one game,[66] John finished his first full season at the club, making thirty–three appearances and scoring nine times in all competitions.
[75][76] 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.
Ahead of the 2016–17 season, John continued to express desire to leave the club, stating “it's time for a change”.
[87] 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.