Era figlio del re Carlo IX di Svezia e della seconda moglie Cristina di Holstein-Gottorp.
Divenne duca nel 1609 e, alla morte di suo padre nel 1611, divenne reggente del ducato sua madre Cristina, che convinse il figlio maggiore Gustavo II Adolfo di Svezia, succeduto al padre, a conservare i diritti del fratello sul ducato.
Nel 1620 sposò con una cerimonia segreta la nobildonna Elisabet Ribbing (1596-1662). Dall'unione nacque una bambina: Elisabet (1622-1682), che sposò Axel Turesson Natt och Dag.
Giovanni entrò nell'esercito e nel 1621 accompagnò il re nella guerra contro la Livonia, distinguendosi durante l'assedio di Narva.
Durante la campagna militare si ammalò e morì. Sua figlia venne allevata dalla nonna e divenne dama di compagnia della regina Maria Eleonora del Brandeburgo.