Jak jednou objekt serializujete, tak už takřka nemůžete překopat vnitřní reprezentaci. Nějaká aktualizace pak obvykle něco rozbije.
Iba doplním, že serializačné knižnice umožňujú s dátami ukladať aj ich verziu, ktorá sa pri deserializácii používa na rozhodovanie, čo sa vlastne na vstupe očakáva, takže sa nenačítava niečo, čo na vstupe pre danú verziu nie je.
Program se ale asi stejně rozbije, protože bude sice vědět, že se jedná o jinou verzi, ale nebude vědět, co s ní dělat.
Program zostavený s podporou verzie 3 bude vedieť, čo robiť pri načítavaní dát serializovaných verziou 2, pretože pri písaní deserializačnej funkcie ošetríte zmeny, ktoré nastali prechodom na novú verziu.
Pokiaľ vaše zmeny boli nad rámec toho, že bolo niečo pridané alebo vymazané, dá sa to riešiť viacerými krokmi s dátovými objektami a ich ďalším spracovaním.
Zároveň je nutné zamyslieť sa na tým, kde sa končí (de)serializácia a kde už začína konverzia dát.
Riešil som celkom divoké veci vrátane veľkých zmien typov a dá sa to.
Pri zachovaní určitej disciplíny sa dá riešiť aj to, že program zostavený s podporou verzie 3 načíta zo súboru uloženého verziou 4 aspoň spoločné dáta. Ktorých môže byť aj 99%. Dokonca aj to, že pri novom uložení, dáta, ktoré verzia 3 nepozná, zachová a verzia 4 ich potom načíta ako keby sa nič nestalo. Je samozrejmé, že to chce dobrý návrh a zmeny pre takéto použitie musia mať zmysel.