Per Robert Murray of FanRag Sports, the Cardinals are receiving outfielder J.B. Woodman from the Blue Jays for Diaz.
Diaz became expendable for the Cardinals following the emergence of Paul DeJong, who led the team with 25 home runs in 2017.
The Blue Jays are taking a flier on Diaz with the hope he'll bounce back next season. He spent two months in Triple-A from June 28 through September 20 and hit just .259/.290/.392 with seven home runs in 79 games.
Diaz was an All-Star in 2016 and finished fifth in National League Rookie of the Year voting. The 27-year-old got off to a terrific start in his debut season, posting a .315/.380/.536 slash line in the first half, but he struggled after the All-Star break with a .782 OPS.
Woodman spent 2017 in Low-A with the Lansing Lugnuts. The 22-year-old was a second-round pick in 2016 and hit .240/.320/.378 in 96 games last season.
The Blue Jays will be able to use Diaz as a utility infielder next season. He can also serve as the primary backup to shortstop Troy Tulowitzki, who has missed a total of 127 games in the past two seasons.