ESPN first reported the news of the trade, and the Bills later confirmed the deal along with the Niners.
Johnson is a good fit in San Francisco, which was searching for a third receiver to complement Michael Crabtree and Anquan Boldin. While Johnson doesn't have the blazing speed general manager Trent Baalke was looking for, his ability to run option routes should be a boon for quarterback Colin Kaepernick.
"Stevie was a great contributor during his career with our organization," Bills GM Doug Whaley said in a release. "Today's decision was not an easy one to make, especially involving a player like Stevie who leaves everything he has on the field and is an emotional leader in our locker room."
Johnson plays similarly to Crabtree and Boldin as a physical possession receiver who isn't a great vertical threat. However, he is an elusive route runner who gives cornerbacks fits, especially on option routes.
Much of his reduction in stats last season could be attributed to the Bills' struggles at quarterback.
If he can find a rapport with Kaepernick, Johnson could be a solid No. 2 receiver for the 49ers -- something any team would love to get out of a third-round pick.