Obfuscation implies that all of the existing names are changed, to obscure the meaning and intent of the code (smart and motivated people can still figure out what the code does, it just involves more effort).
Serialization typically depends on naming conventions to match the input with properties on the target object. Since the latter have been renamed, you need to provide an explicit map of names to your serialization engine. This typically works by annotating all serialized properties with attributes, where each attribute specifies the serialized name of the property. This information allows the serializer to e.g. map the "RegistrationDate" input to the property "I1i" (as an example obfuscated name for what was probably also called "RegistrationDate" before obfuscation). Consult the documentation for your serialization engine to see how you configure this.
However, you should note that these attributes and their values are readily available to people inspecting your assembly, and you are therefore in truth gaining very little by obfuscating the code. In fact, I would argue that it is a complete waste of your time, since even obfuscated code can usually be decompiled to fairly sensible C#.