We do not find Yochanan among Yoshiyah's sons!
Radak, Malbim: This is Yeho'achaz, he had two names. Pharaoh Necho exiled him to Egypt, and he died there. Why is he called the Bechor? Yehoyakim was the Bechor! Indeed, Yehoyakim was two years older. Yochanan was the Bechor for kingship (the first of them to reign - Horiyos 11b).
Who is Shalum?
Radak citing Horiyos 11b: Shalum is Tzidkiyahu. He is called Shalum because his deeds were Mushlam (complete, i.e. righteous), just his generation was evil. Or, he is called Shalum because Shalmah (finished) Malchus Beis David in his days. He was the third to be born, and the fourth to reign after Yoshiyah (after Yeho'achaz, Yehoyakim, and Yehoyakim's son Yechanyah).
Radak: According to simple meaning, Shalom is Yehoyachin (another name for Yechanyah). He cannot be a fourth son, for we do not find other kings after Yoshiyah, and it says "Shalum ben Yoshiyah ha'Molech Tachas Yoshiyah" (Yirmeyah 22:11). That Nevu'ah was about Yehoyachin, who was exiled to Bavel. He is called Ben Yoshiyah, even though he was his grandson; this is common.
Vilna Gaon: Horiyos 11b says that Shalum is Tzidkiyahu, i.e. in the verse "Shalum ben Yoshiyah? ha'Molech Tachas Yoshiyah." We do not find that Shalum reigned - Tzidkiyah was the last king! Rather, that Shalum is Tzidkiyah. Here, it says that Tzidkiyah was third, and Shalum fourth - surely Shalum was a different son! "Revi'i" applies both to Tzidkiyah (he was fourth to reign) and to Shalum (he was Yoshiyah's fourth son).
Malbim (according to Mahari): He is Yeho'achaz. Refer to Melachim II, 24:17:1:2 and the notes there.
Malbim: He was Yoshiyah's fourth son. When [Nebuchadnetzar] made Tzidkiyah king, he exiled Shalum together with Yehoyakim to Bavel, lest he contest Tzidkiyah's kingship.


