The 19-year-old striker first signed professional forms in summer 2020, and has trained with the first-team for over two years. He made his first senior squad against Wolverhampton Wanderers at the end of 2019/20.
This year has been another landmark campaign for Gordon, who struck 11 times in his first eight games of 22/23, earned the September Premier League 2 Player of the Month award and made several Premier League squads.
He joined the first-team on their winter training tour of Turkey, playing against both Napoli and Trabzonspor.
Academy Director Gary Issott said of his extension: "John has worked consistently hard for over a decade at this club, and the recognition he's had this year is a reward for that. He's really enjoying his football in the Premier League 2 and is being given invaluable experience by the first-team manager. "
Gordon added: "I'm delighted to sign this contract... It shows that hard work does pay off and I'm ready to get going again. I've enjoyed [training with the first-team] and the senior lads have been very good to me. They're helping me to better my game."