XML to be deserialized:
<CheckOnlineStatus xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Lifecare.LIS.Integration.Hyland.Models">
<Database>string</Database>
<InstancesStillNearline>0</InstancesStillNearline>
<SeriesLocationMap xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringboolean>
<d2p1:Key>test</d2p1:Key>
<d2p1:Value>true</d2p1:Value>
</d2p1:KeyValueOfstringboolean>
<d2p1:KeyValueOfstringboolean>
<d2p1:Key>test1</d2p1:Key>
<d2p1:Value>false</d2p1:Value>
</d2p1:KeyValueOfstringboolean>
</SeriesLocationMap>
<Status>string</Status>
<StudyInstanceUID>string</StudyInstanceUID>
<TotalClips>0</TotalClips>
<TotalExecutionTime>0</TotalExecutionTime>
<TotalInstances>0</TotalInstances>
</CheckOnlineStatus>
Data Models used:
using System.Collections.Generic;
using System.Xml.Serialization;
[XmlRoot("CheckOnlineStatus")]
/// <summary>
/// The CheckOnlineStatus entity.
/// </summary>
public class CheckOnlineStatus
{
[XmlElement("Status")]
/// <summary>
/// Gets or sets the Status
/// </summary>
public string Status { get; set; }
[XmlElement("Database")]
/// <summary>
/// Gets or sets the Database
/// </summary>
public string Database { get; set; }
/// <summary>
/// Gets or sets the StudyInstanceUID
/// </summary>
[XmlElement("StudyInstanceUID")]
public string StudyInstanceUID { get; set; }
/// <summary>
/// Gets or sets the TotalExecutionTime
/// </summary>
[XmlElement("TotalExecutionTime")]
public long TotalExecutionTime { get; set; }
/// <summary>
/// Gets or sets the TotalInstances
/// </summary>
[XmlElement("TotalInstances")]
public int TotalInstances { get; set; }
/// <summary>
/// Gets or sets the TotalClips
/// </summary>
[XmlElement("TotalClips")]
public int TotalClips { get; set; }
/// <summary>
/// Gets or sets the InstancesStillNearline
/// </summary>
[XmlElement("InstancesStillNearline")]
public int InstancesStillNearline { get; set; }
/// <summary>
/// Gets or sets the dictionary of series location map
/// </summary>
[XmlElement("SeriesLocationMap")]
public Dictionary<string, bool> SeriesLocationMap { get; set; }
}
Deserialization code, here result is above xml in string format:
(CheckOnlineStatus)new XmlSerializer(typeof(CheckOnlineStatus)).Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(result)));
I am getting below runtime error:
Cannot serialize member Lifecare.LIS.Integration.NDP.Models.CheckOnlineStatus.SeriesLocationMap of type System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], because it implements IDictionary.
I tried couple of other things but it did not worked out e.g. https://www.codeproject.com/Questions/716556/XML-deserialize-Attributes-to-dictionary
Can someone please help here. Thanks.