Johnson, 22, started 74 games for the Spurs in his third season, averaging a career-high 17.1 points while shooting 39.8 percent from 3-point range.
Friday's agreement comes two weeks after the Spurs traded away All-Star guard Dejounte Murray to the Atlanta Hawks for forward Danilo Gallinari and three first-round picks. Murray led the Spurs last season at 21.1 points per game.
Johnson was the Spurs' first-round pick in the 2019 draft, going No. 29 overall.