Miami Heat (2014-2019)Edit
Dopo essere andato undrafted nel draft NBA 2014, Johnson si unì ai Miami Heat per la NBA Summer League 2014. Il 7 agosto 2014 firmò con gli Heat, ma fu poi waippato dalla squadra il 25 ottobre. Il 3 novembre fu acquisito dai Sioux Falls Skyforce della NBA Development League come giocatore affiliato agli Heat.
Il 12 gennaio 2015, Johnson firmò un contratto di 10 giorni con gli Heat. Tre giorni dopo, fece il suo debutto in NBA contro i Golden State Warriors, apparendo per 1:44 minuti e segnando due punti su un paio di tiri liberi. Il 22 gennaio, gli Heat decisero di non trattenere Johnson dopo la scadenza del suo contratto e due giorni dopo tornò agli Skyforce. In seguito si è riunito agli Heat il 29 gennaio, firmando un altro contratto di 10 giorni con la squadra. L’8 febbraio ha firmato un accordo di due anni con gli Heat. Il 2 marzo, ha avuto un season-best con 26 punti e 4 rubate in una vittoria 115-98 contro i Phoenix Suns. Cinque giorni dopo, ha segnato 24 punti e giocato in un career-high di 44 minuti dalla panchina, aiutando gli Heat a sconfiggere i Sacramento Kings, 114-109. Il 9 luglio 2015, Johnson è stato messo da parte per sei settimane con una mascella rotta che ha subito mentre giocava per gli Heat durante la NBA Summer League 2015. Il 9 dicembre 2015, segnò un season-high di 20 punti in una sconfitta contro gli Charlotte Hornets. In seguito ha saltato otto partite durante il mese di dicembre con un infortunio alla spalla. Johnson ha combattuto attraverso il suo dolore alla spalla sinistra durante il mese di gennaio prima di perdere le ultime due partite della squadra del mese dopo aver ceduto al dolore. Dopo aver inizialmente cercato di evitare la chirurgia, Johnson alla fine ha ceduto all’idea il 1 febbraio 2016, una procedura che lo ha escluso per tre mesi. Tornò in azione il 1º maggio, uscendo dalla panchina per gli ultimi sei minuti della vittoria degli Heat in gara 7 contro gli Charlotte Hornets nel primo turno dei playoff.
Dopo la stagione 2015-16, Johnson divenne un restricted free agent. Il 6 luglio 2016 ricevette un foglio d’offerta quadriennale da 50 milioni di dollari dai Brooklyn Nets. Quattro giorni dopo, gli Heat eguagliarono l’offerta contrattuale dei Nets, rifirmando Johnson. Il 7 dicembre 2016, segnò un career-high di 27 punti in una sconfitta 103-95 contro gli Atlanta Hawks. Il 20 dicembre ha superato quel punteggio, segnando 32 punti – il massimo che qualsiasi riserva degli Heat abbia mai segnato in una partita – in una sconfitta 136-130 in doppio overtime contro gli Orlando Magic. Il precedente record di punteggio degli Heat da parte di una riserva era di 29 punti, di Voshon Lenard nel 1999.
Il 30 dicembre 2017, Johnson ha segnato 22 dei suoi 31 punti stagionali nel terzo quarto della vittoria 117-111 degli Heat sui Magic.
Il 23 dicembre 2018, Johnson ha segnato 20 dei suoi 25 punti nel terzo quarto della vittoria 115-91 degli Heat sui Magic.
Phoenix Suns (2019-2020)Edit
Il 6 febbraio 2019, Johnson è stato scambiato, insieme a Wayne Ellington, ai Phoenix Suns in cambio di Ryan Anderson. Il 23 febbraio, segnò un season-high di 29 punti in una sconfitta 120-112 contro gli Atlanta Hawks. Due giorni dopo, segnò 18 punti contro la sua ex squadra, i Miami Heat, per aiutare i Suns a spezzare una striscia di sconfitte di 17 partite record di franchigia per vincere 124-121. Il 4 aprile 2019, Johnson fu dichiarato fuori per il resto della stagione dopo aver saltato 10 partite con dolore al ginocchio destro e aver subito un intervento chirurgico artroscopico. Il 9 febbraio 2020, Johnson fu rinunciato dai Phoenix Suns.
Brooklyn Nets (2020-presente)Edit
Il 24 giugno 2020, Johnson firmò con i Brooklyn Nets. Il 27 novembre, ha rifirmato con i Nets.