Deriving (de)serialization for GADT and Advanced Data Types

Apologies in advance that I can not provide anything like a solution to the problem, but how do you expect something like

data ExistentialNumber where
  Number :: Integral a => a -> ExistentialNumber

would be deserialized? Isn’t deserialization of non-monomorphic types (that hide inside GADTs) an ill-posed problem? Perhaps this thread contains useful methods to bring a GADT into a better serializable form.