私はサードパーティのAPIにウェブリクエストを行い、その応答をC#クラスに動的に逆シリアル化したいと思います。しかし、私は時々オブジェクトのリストと時にはオブジェクトのリストを取得しているという問題があります。xmlをC#クラスに動的に逆シリアル化します
すでに 'objectClass'がxmlに存在するようなエラーが表示されます。
解決策は次のとおりです。両方の応答に異なるクラスを定義する必要があります。 1つのクラスを使用してこのXMLを非直列化する他のオプションはありますか?
サンプル応答:他の応答において
<data listtype="objectClass" count="1">
<objectClass>
</objectClass>
</data>
:
<data listtype="objectClass" count="2" totalcount="2" numremaining="0">
<objectClass>
<!-- Properties -->
</objectClass>
<objectClass>
<!-- Properties -->
</objectClass>
</data>
クラス:
[XmlRoot(ElementName = "data")]
public class Data
{
[XmlElement(ElementName = "objectClass")]
public objectClass ObjectItem { get; set; }
[XmlElement(ElementName = "objectClass")]
public List<objectClass> ObjectItemList { get; set; }
}
編集:
A最後に、応答xmlには別のケースでオブジェクト名が含まれていることがわかりました。
サンプル応答:他の応答で
<data listtype="objectClass" count="1">
<objectClass>
</objectClass>
</data>
:
<data listtype="OBJECTCLASS" count="2" totalcount="2" numremaining="0">
<OBJECTCLASS>
<!-- Properties -->
</OBJECTCLASS>
<OBJECTCLASS>
<!-- Properties -->
</OBJECTCLASS>
</data>
私は私のデータクラスに1つの以上の要素を追加して、それが機能するようになりました。
[XmlElement(ElementName = "OBJECTCLASS")]
public List<OBJECTCLASS> ObjectItem { get; set; }