Одна вещь, которую я сделал, чтобы учесть тот факт, что сериализованная форма не является обратно совместимой (скажем, при динамической перезагрузке класса в работающей системе), это загрузить поля, которые я хочу сохранить, в хэш-карту, а затем сериализовать это. Таким образом, я всегда могу десериализовать данные, даже если пропущены поля. Возможно, вам придется указать значения по умолчанию для отсутствующих ключей, но это лучше, чем испортить порядок полей.