(De)serialization of objects with property-name same as object-name stopped working correctly since V3.2
See original GitHub issueGiven the classes
public class Person
{
public string LastName { get; set; } = string.Empty;
public string FirstName { get; set; } = string.Empty;
public string Salutation { get; set; } = string.Empty;
}
public class Item
{
public string Description { get; set; } = string.Empty;
public string Person { get; set; } = string.Empty;
public byte[] Content { get; set; }
}
the code
var item = new Item();
item.Person = "Testperson";
item.Description = "Testing ExtendedXmlSerializer";
item.Content = new byte[] { 12, 13, 14, 15, 16 };
string content = serializer.Serialize(new XmlWriterSettings { Indent = true }, item);
var deserializedItem = serializer.Deserialize<Item>(new XmlReaderSettings(), content);
results in deserializedItem.Person
being string.Empty
and deserializedItem.Content
being null
The resulting xml after serialization looks like
<?xml version="1.0" encoding="utf-8"?>
<Item xmlns="clr-namespace:TestingRetryItem;assembly=TestingRetryItem">
<Description>Testing ExtendedXmlSerializer</Description>
<Person xmlns:exs="https://extendedxmlserializer.github.io/v2" exs:member="">Testperson</Person>
<Content>DA0ODxA=</Content>
</Item>
The problem here seems to be exs:member=""
because after manually deleting this from the resulting xml the deserialization works. There is no exception thrown neither at serialization nor deserialization.
The order of the properties is relevant as well, because e.g having the Item
class look like
public class Item
{
public string Description { get; set; } = string.Empty;
public byte[] Content { get; set; }
public string Person { get; set; } = string.Empty;
}
the Content
property isn’t null
anymore. It just seems that after accessing a property with a name equal to a class-name the deserialization stops without throwing an exception.
Issue Analytics
- State:
- Created 8 months ago
- Comments:11 (5 by maintainers)
Top Results From Across the Web
JsonProperty - Use different name for deserialization, but ...
I am retrieving JSON from an API. I am using newtonsoft (this is json.net right?) to deserialize this into a list of objects....
Read more >One naïve man's struggle with TypeScript class serialization
JavaScript seems to have been built with serialization inherent in the language: JSON is a first-class way to serialize and represent JavaScript objects....
Read more >OpenAPI Specification v3.1.0 | Introduction, Definitions, & ...
The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs.
Read more >How to serialize properties of derived classes with System. ...
Learn how to serialize polymorphic objects while serializing to and deserializing from JSON in .NET.
Read more >Serialization and Deserialization in Java with Example
Serialization is a mechanism of converting the state of an object into a byte stream. Deserialization is the reverse process where the byte ......
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
You don’t need to apologize. I have fixed the issue by using
EnableReferences()
for serialization and omitting it for deserialization. I have tested it and it works. Thanks again for your help and this wonderful project.Thank you very much! I appreciate that. I definitely feel beholden to this project and all the developers that depend on it, so when things don’t work I take that responsibility seriously.
I like your other solution as well. I didn’t even think of that, and hopefully, if someone in the future runs into this problem they have a couple of workarounds they can possibly implement.
Anyways, thank you for your understanding and kind words. You made my day. 🙏 Closing for now.