Johnson's game-winning shot capped an improbable rally from a 16-point second-half deficit for the Nets (11-21), led by a season-high 29 points from point guard Deron Williams.
Brooklyn trailed, 77-61, late in the third quarter, but Williams scored 18 in the second half and helped set the stage for Johnson's last-second shot. Paul Pierce added 18 points for the Nets.
Kevin Durant led the Thunder (25-7) with 24 points. Oklahoma City was playing its fourth straight game without injured All-Star guard Russell Westbrook, who had surgery on his right knee Dec. 27.
The loss was the second straight for the Thunder, only the second time they've lost two in a row this season.
Golden State 123, at Miami 114: Stephen Curry scored 36 points and handed out 12 assists, and David Lee scored 32 points as the Warriors beat the Heat and extended the NBA's longest current winning streak to seven games.
at Cleveland 87, Orlando 81 (OT): Anderson Varejao hit two crucial jumpers in overtime and tied a franchise record with a career-high 25 rebounds as the Cavaliers beat the Magic to snap a season-high six-game losing streak.
at Chicago 94, Boston 82: Joakim Noah had 17 points, 11 rebounds and nine assists to help the Bulls defeat the Celtics and snap a two-game skid. Jordan Crawford led the Celtics, who have lost two straight, with 22 points.
at Portland 134, Charlotte 104: Wesley Matthews had 25 points, including five of Portland's 21 three-pointers, and the Trail Blazers routed the Bobcats. With the win, Portland upped its record to 26-7 and moved back into the top spot in the Western Conference.
at Utah 96, Milwaukee 87: Gordon Hayward scored 22 points and Derrick Favors had 21 points and 11 rebounds to help the Jazz hold off the Bucks and claim consecutive wins for just the third time this season.