I am having trouble with my serializing and deserializing. The below code has the List object record as a list while serializing however when deserializing it doesn't work.
Each Tag Parameter is of type object
TreeViewCollection = new ObservableCollection<TreeViewItem>()
{
new TreeViewItem()
{
Header = "Suite 1"
},
new TreeViewItem()
{
Header = "Suite 2",
Nodes = new ObservableCollection<TreeViewItem>()
{
new TreeViewItem()
{
Header = "Case 1"
}
}
},
new TreeViewItem()
{
Header = "Suite 2",
Nodes = new ObservableCollection<TreeViewItem>()
{
new TreeViewItem()
{
Header = "Case 2",
Tag = new List<ListViewItem>()
{
new ListViewItem()
{
Tag = new ActionObject()
{
Command = "Command",
Target = "Target",
Value = "Value",
Comment = "Comment"
}
}
}
},
new TreeViewItem()
{
Header = "Case 3"
}
}
}
};
string serializedJson = JsonConvert.SerializeObject(TreeViewCollection, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
var deserializedObject = JsonConvert.DeserializeObject<ObservableCollection<TreeViewItem>>(serializedJson, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
TreeViewCollection = deserializedObject;
However it comes out as JSON and not a List() object
{[
{
"$type": "RFA.Models.Items.ListViewItem, RFA",
"ID": "0b9661f0-87f1-41f4-85cb-620dc1f49bb3",
"Name": null,
"Tag": {
"$type": "RFA.Models.Objects.ActionObject, RFA",
"Command": "Command",
"Target": "Target",
"Value": "Value",
"Comment": "Comment"
}
}
]}
How can I get json deserialization to work with object types
Requested TreeviewItem class :
public partial class TreeViewItem
{
#region Private Variables
private string _header;
private object _tag;
private ObservableCollection<TreeViewItem> _nodes;
#endregion
#region Properties
public string Header
{
get { return _header; }
set
{
if (value == _header) return;
_header = value;
OnPropertyChanged();
}
}
public object Tag
{
get { return _tag; }
set
{
if (value == _tag) return;
_tag = value;
OnPropertyChanged();
}
}
public ObservableCollection<TreeViewItem> Nodes
{
get { return _nodes; }
set
{
if (Equals(value, _nodes)) return;
_nodes = value;
OnPropertyChanged();
}
}
#endregion
}