序列化和反序列化对象图,并从字符串键/值对
问题描述:
假设下面的模型序列化和反序列化对象图,并从字符串键/值对
public class MyObject
{
public string Name { get; set; }
public ICollection<MyObjectItem> Items { get; set; }
}
public class MyObjectItem
{
public string Name { get; set; }
public int Total { get; set; }
}
我想序列化和反序列化这个对象图键/值对像字符串列表:
MyObject.Name - “名称”
MyObject.Items.0.Name - “名1”
MyObject.Items.0.Total - “10”
MyObject.Items.1.Name - “名称2”
MyObject.Items.1.Total - “20”
答
好了,你不能使用内置串行的,你需要一个定制的ToString()/解析(),与此类似: (toString()方法是一种自我解释的)
MyObject obj = new MyObject();
List<MyObjectItem> items = new List<MyObjectItem>();
foreach (string line in text.Split)
{
// skip MyObject declaration int idx = line.IndexOf('.');
string sub = line.Substring(idx);
if (sub.StartsWith("Name")) {
obj.Name = sub.Substring("Name".Length + 3 /* (3 for the ' - ' part) */);
}
else
{
sub = sub.Substring("Items.".Length);
int num = int.Parse(sub.Substring(0, sub.IndexOf('.'));
sub = sub.Substring(sub.IndexOf('.' + 1);
if (items.Count < num)
items.Add(new MyObjectItem());
if (sub.StartsWith("Name"))
{
items[num].Name = sub.SubString("Name".Length + 3);
}
else
{
items[num].Total = sub.SubString("Total".Length + 3);
}
}
}
obj.Items = items;
希望这会有所帮助,因为我没有在这个时候访问C#IDE ...
击掌。有问题吗? – 2010-10-13 18:35:55
尝试将'ICollection'更改为'List' – SwDevMan81 2010-10-13 18:49:25