Ich mache Web-Anfrage an API von Drittanbietern und möchte diese Antwort dynamisch auf C# -Klasse deserialisieren. Aber es gibt ein Problem, dass ich als Antwort manchmal eine Liste von Objekten und manchmal ein Objekt bekomme.Deserialisierung XML zu C# -Klasse dynamisch
Es gibt mir Fehler wie bereits 'objectClass' ist in Xml vorhanden.
Ich weiß, die Lösung ist: Ich muss verschiedene Klassen für beide Antworten definieren. Gibt es eine andere Option, die dieses XML mit einer Klasse deserialisiert?
Beispielantwort:
<data listtype="objectClass" count="1">
<objectClass>
</objectClass>
</data>
In anderen Antwort:
<data listtype="objectClass" count="2" totalcount="2" numremaining="0">
<objectClass>
<!-- Properties -->
</objectClass>
<objectClass>
<!-- Properties -->
</objectClass>
</data>
Klasse:
[XmlRoot(ElementName = "data")]
public class Data
{
[XmlElement(ElementName = "objectClass")]
public objectClass ObjectItem { get; set; }
[XmlElement(ElementName = "objectClass")]
public List<objectClass> ObjectItemList { get; set; }
}
bearbeiten:
A t das Letzte, das ich fand, daß Antwort xml Objektnamen in unterschiedlichem Fall enthält.
Beispielantwort:
<data listtype="objectClass" count="1">
<objectClass>
</objectClass>
</data>
In anderer Antwort:
<data listtype="OBJECTCLASS" count="2" totalcount="2" numremaining="0">
<OBJECTCLASS>
<!-- Properties -->
</OBJECTCLASS>
<OBJECTCLASS>
<!-- Properties -->
</OBJECTCLASS>
</data>
Ich habe in meiner Datenklasse ein weiteres Element hinzugefügt und es funktioniert jetzt.
[XmlElement(ElementName = "OBJECTCLASS")]
public List<OBJECTCLASS> ObjectItem { get; set; }