使用JavascriptSerializer,有没有办法像这样反序列化json:
{
items:[
{name:"item1", prop1:true, prop2:"prop"},
{name:"item2", prop1:true, prop3:"prop", prop4:"prop"}
]
}是否可以使用这些类进行反序列化:
public abstract class Item
{
public String name {get; set;}
public bool prop1 {get; set;}
}
public class ItemA : Item
{
public String prop2 {get; set;}
}
public class ItemB : Item
{
public String prop3 {get; set;}
public String prop4 {get; set;}
}感谢您的帮助!
发布于 2013-11-21 19:29:41
不,除非你采用了非类型安全的方法,比如使用dynamic,否则你不能做你想做的事情。
public class Container
{
public List<dynamic> items { get; set; }
}问题是你有一个JavascriptSerializer不支持的混合类型列表。
发布于 2013-11-21 19:52:10
尝试将您的json字符串粘贴到http://json2csharp.com/,然后生成类并执行代码
public class Item
{
public string name { get; set; }
public bool prop1 { get; set; }
public string prop2 { get; set; }
public string prop3 { get; set; }
public string prop4 { get; set; }
}
public class RootObject
{
public List<Item> items { get; set; }
}
string sValue ="{items:[{name:"item1", prop1:true, prop2:"prop"},{name:"item2", prop1:true,
prop3:"prop", prop4:"prop"}]}
System.Web.Script.Serialization.JavaScriptSerializer ObjJSerializer = new
System.Web.Script.Serialization.JavaScriptSerializer();
var Data = ObjJSerializer.Deserialize<RootObject>(sValue);https://stackoverflow.com/questions/20119435
复制相似问题