Change your Car implementation with following code..
if you observe your code, you had define new property weight with hides the property member from Vehicle. so in your code there are two member having same name.
weight - > Vehicle - which not cover under serialization and it`s value is assign by constructor at time of deserialization
weight - > Car - which cover under serialization so normal deserialization will work on it.