首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# JavascriptSerializer继承

C# JavascriptSerializer继承
EN

Stack Overflow用户
提问于 2013-11-21 19:15:40
回答 2查看 383关注 0票数 0

使用JavascriptSerializer,有没有办法像这样反序列化json:

代码语言:javascript
复制
{
   items:[
      {name:"item1", prop1:true, prop2:"prop"},
      {name:"item2", prop1:true, prop3:"prop", prop4:"prop"}
   ]
}

是否可以使用这些类进行反序列化:

代码语言:javascript
复制
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;}
}

感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2013-11-21 19:29:41

不,除非你采用了非类型安全的方法,比如使用dynamic,否则你不能做你想做的事情。

代码语言:javascript
复制
public class Container
{
    public List<dynamic> items { get; set; }
}

问题是你有一个JavascriptSerializer不支持的混合类型列表。

票数 1
EN

Stack Overflow用户

发布于 2013-11-21 19:52:10

尝试将您的json字符串粘贴到http://json2csharp.com/,然后生成类并执行代码

代码语言:javascript
复制
  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);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20119435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档