En 2009, Johnson devient le principal receveur des Mariners[3] et est derrière le marbre pour 80 parties. Il établit des records personnels en une année de 55 coups sûrs et 27 points produits.
En 2010, sa moyenne au bâton ne s'élève qu'à ,191 en 61 parties pour Seattle. Les Mariners le rétrogradent en ligue mineure et l'envoie jouer pour les Rainiers de Tacoma, tandis que le poste de receveur est comblé par Adam Moore. L'embauche de l'agent libreMiguel Olivo durant l'entre-saison annonce le départ imminent de Johnson.
Padres de San Diego
Rob Johnson est échangé aux Padres de San Diego le [4]. Il obtient 3 circuits et 16 points produits en 67 matchs pour San Diego en 2011 puis devient agent libre.
Mets de New York
Le , il signe un contrat des ligues mineures avec les Mets de New York[5]. Après un premier séjour avec les Mets en mai 2012[6], Johnson est rétrogradé aux Bisons de Buffalo dans les ligues mineures mais rappelé pour le premier départ dans le baseball majeur de son coéquipier des Bisons Matt Harvey, le . Les Mets décident de garder les deux joueurs avec eux après cette première expérience concluante[7]. Johnson frappe pour ,250 en 17 parties pour les Mets avec quatre points produits.
Cardinals de Saint-Louis
Johnson signe un contrat avec les Cardinals de Saint-Louis le . Il dispute 20 matchs pour les Cardinals en 2013, dont son dernier dans les majeures le .
Dernier essai avec San Diego
Au printemps 2014, Johnson se joint à son ancienne équipe, les Padres de San Diego, mais cette fois avec l'intention de poursuivre sa carrière comme lanceur[8]. Cependant, des douleurs au coude coupent court à ses espoirs de réussir ce changement de carrière, et il annonce sa retraite sportive le [9].