Johnston made his first-class debut for New South Wales in a Sheffield Shield match against Tasmania in March 1999. He opened the bowling with Brett Lee who would make his debut for Australia later that year. Johnston's first wicket was that of Michael Di Venuto; he took one more wicket that day, but after play ended on the second day Johnston suffered a broken arm as the team coach drove off while he was climbing on. He played his only List A match for them in October that year, against Queensland. He played four Pura Cup matches for them in 2000 before his career took him to Ireland. New South Wales failed to notify Johnston that his contract had not been renewed and he was instead informed by a team-mate. He returned to club cricket where he represented Campbelltown, North Sydney, and Mosman, captaining the last.
Johnston first played club cricket in Ireland in 1995 and returned for four more seasons, meeting his wife Vanessa, with whom he now has two children. He continued playing Sydney Grade Cricket for North Sydney Cricket Club, but qualified for an Irish passport and then-coach Adrian Birrell decided he might be a useful addition to the Irish side. He made his debut for Ireland on 5 May 2004 against Surrey in a C & G Trophy match that Ireland won, only their second win against a first-class county. He also played in the next match of the competition against Northamptonshire. Johnston's next appearances for Ireland were two matches against the West Indies in June, the second of which Ireland won. He then played against the MCC later that month, before making his first-class debut for Ireland against the Netherlands in the Intercontinental Cup. This was followed by the 2004 European Championship and a first-class match against Scotland. The main action for Ireland in 2005 was the 2005 ICC Trophy, hosted in both Northern Ireland and the Republic of Ireland. Johnston was in the Irish squad and they reached the final, losing to Scotland, but still qualifying for the 2007 World Cup.
He was made Irish captain in time for the semi-final of the 2005 Intercontinental Cup against the UAE in Windhoek, Namibia. The match was drawn, but Ireland qualified for the final on bonus points. Ireland faced Kenya in the final, winning by six wickets. The following year started with several matches against English county sides before captaining Ireland in their first ever One Day International against England. He also played in the European Championship that year, which included ODIs against Scotland and the Netherlands. He also played in two Intercontinental Cup matches, against Namibia and Scotland.
Johnston remained Irish captain for the World Cricket League Division One tournament in Kenya in January/February 2007 and for the World Cup, playing an Intercontinental Cup match against the UAE in between the two events. The World Cup provided Johnston with some of the high points in his cricket career, leading his team to a thrilling tie against Zimbabwe and hitting the winning runs against Pakistan to record one of the biggest upsets in cricket history. He also captained Ireland to a win over Bangladesh in the Super Eight stage of the tournament as Ireland finished eighth in the tournament. He remained captain of the Ireland side for their Friends Provident Trophy campaign in 2007 and took a hat-trick against Gloucestershire on 10 May 2007 which was only the second hat-trick for Ireland, the only previous one coming in August 1877 against I Zingari.
In March 2008 Johnston announced that he was stepping down as Ireland captain and taking a break from international cricket and would miss the 2008 Friends Provident Cup, though he would continue to play for Railway Union and expected to play for Ireland return later that year. Johnston explained the rest was to allow him to focus on his family life, his professional career, and allow his body to recover from various injuries. Though he remarked "I don't think I'm up to the strains of one-day cricket any more", he would go on to play more than 30 further ODIs. In July he was selected for Ireland's Intercontinental Cup fixture against Canada, but opted out of the one-day match. Ireland hosted the 2009 ICC World Twenty20 Qualifier in early August. Johnston made his Twenty20 International debut during the tournament, which was also Ireland's first T20I match.
Cricket Ireland announced their first central contracts for players in June 2009; previously the Ireland team had been made up of amateurs, aside from those players who could forge careers in the England Cricket Board's County Championship, and this was part of an initiative to make the sport more professional. Johnston and Alex Cusack were the two players given the contracts. Johnston won his 100th cap in the August 2009 ODI loss to England, when he was named Man of the Match, for 20 not out and bowling figures of 10-2-26-4. Johnston was one of seven Ireland players to be nominated for the 2009 Associate and Affiliate Player of the Year (there were fourteen nominees in all), although he did not make the 4-man short-list. In January 2010 the ICU
In January 2010 Cricket Ireland expanded the number of players with central contracts to six, including Johnston. That year he was again nominated for the Associate and Affiliate Player of the Year Award, this time alongside two other Ireland players (there were 16 nominees in all); the award was given to Ryan ten Doeschate of the Netherlands. Johnston was selected in Ireland's 15-man squad for the 2011 World Cup. During Ireland's 3 wicket win against England on 2 March Johnston took his 50th ODI wicket when he bowled Michael Yardy and in the process became the first Irish bowler to do so.
Johnston intends to move into coaching after he finishes playing, and with that in mind he accepted the head coach role with YMCA in 2012. In March the same year he left Railway Union to play for Sandymount. In June 2014 he was appointed as assistant coach to the NSW Blues and Sydney Sixers.