Johnstone werd in 2009 opgenomen in de jeugdopleiding van Manchester United. Dat verhuurde hem op 26 juli 2011 aan Oldham Athletic, waar hij twee vriendschappelijke wedstrijden mocht meedoen, maar nooit zijn officiële debuut maakte. Manchester United verhuurde Johnstone op 9 september 2011 vervolgens aan Scunthorpe United. Daarvoor maakte hij dat jaar zijn officiële competitiedebuut bij de senioren, in de League One. Hij speelde twaalf wedstrijden voor de club voor hij op 19 oktober 2011 zijn vinger ontwrichtte.
In de tweede helft van het seizoen 2012/13 werd hij verhuurd aan Walsall, waar hij zeven wedstrijden speelde. Het jaar erop begon met een verhuurperiode aan Yeovil Town, dat een niveau hoger in de Championship acteerde, maar daar speelde hij slechts één wedstrijd. Daarna werd hij een jaar verhuurd aan Doncaster Rovers, waar hij in totaal 32 wedstrijden speelde.
Halverwege het seizoen 2014/15 werd hij opnieuw aan een ander team verhuurd, ditmaal Preston North End. Hier kwam hij in twee periodes tot 29 wedstrijden. Daarna werd hij twee seizoenen verhuurd aan Aston Villa, waar hij in zijn tweede seizoen voor het eerst onbetwist basisspeler werd. Hij keepte 70 wedstrijden in twee seizoenen daar.
West Bromwich Albion
Nadat hij negen jaar onder contract stond bij Manchester United zonder ooit zijn debuut te maken, vertrok Johnstone in de zomer van 2018 naar West Bromwich Albion. Met die club promoveerde hij in zijn tweede seizoen naar de Premier League, waarin hij in het seizoen 2020/21 zijn debuut maakte, maar hij kon niet voorkomen dat zijn ploeg weer degradeerde. Hij speelde nog één seizoen in de Championship en vertrok vervolgens bij West Brom. Hij kwam tot 167 wedstrijden in vier seizoenen.
Crystal Palace
In de zomer van 2022/23 keerde Johnstone terug in de Premier League bij Crystal Palace. Daar was hij in zijn eerste seizoen tweede keeper achter Vicente Guaita, maar hij kwam wel tot elf wedstrijden in zijn eerste seizoen. Na zijn vertrek moest Johnstone met nieuwe doelman Dean Henderson strijden om de plek van nieuwe eerste doelman. Omdat beide geen blessurevrij seizoen hadden, kwamen ze beide tot ongeveer de helft van de wedstrijden.
Johnstone maakte in september 2010 zijn debuut voor Engeland –19, tegen Slowakije –19. Hij won met Engeland het Europees kampioenschap –17, waar hij eerste doelman was en Jack Butland op de bank hield.
In maart 2021 werd hij door bondscoach Gareth Southgate voor het eerst bij de selectie van Engeland gehaald. Op 6 juni 2021 maakte hij in de oefeninterland tegen Roemenië zijn debuut als international. Op 9 oktober, in zijn derde interland, leverde hij tegen Andorra een assist op de 0-5 van Jack Grealish, die met een lange bal op de counter weggestuurd werd door de doelman.