The 23-year-old, who joined from Middlesbrough in 2010 following a loan spell at Sixfields, has made over 120 appearances for the Cobblers.
Boss Aidy Boothroyd, who steered Northampton away from relegation danger this season, revealed his pleasure at retaining Johnson's services.
"I am delighted John has signed a new deal," he said. "He has got a good amount of experience for someone of his age and I'm sure he will just get better and better as that experience increases."
Any reproduction, publication or redistribution of this material without the written agreement of 365 Media Group is strictly forbidden.