Keshad Johnson of the Miami Heat won the Slam Dunk contest at NBA All-Star Saturday, overcoming perfect scores by San Antonio rookie Carter Bryant on his first dunk in the final round.