Field Yates adds that the 49ers also released TE Daniel Helm with an injury waiver.
Johnson, 35, is a former fifth-round pick of the Buccaneers back in 2012. Since then, Johnson has played for a number of teams including the 49ers, Browns, Bengals, Chargers, Jets, Colts, Bills, Ravens, Giants, Texans and Raiders.
Johnson was selected with the No. 1 overall pick by the San Diego Fleet of the Alliance of American Football before signing on with Washington in 2018. From there, he signed on with the Lions during training camp last year but was released a few months later.
The 49ers signed Johnson to their practice squad last year before returning to San Francisco this past January on a futures contract.
In 2018, Johnson appeared in four games for Washington and completed 57.1 percent of his passes for 590 yards, three touchdowns and four interceptions. He also rushed for 120 yards and a touchdown.