不积跬步,无以至千里;不积小流,无以成江海。

Dean's blog

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

Newtonsoft.Json 使用备忘

抽象类或接口序列化与反序列化

直接将抽象类或接口实例序列化成为一个JSON字符串,这个和普通的做法没有区别,直接使用JsonConvert.SerializeObject()方法就可以了。但是如果直接将JSON反序列化成为一个抽象类或接口的子类实例,则会报“Type is an interface or abstract class and cannot be instantiated.”。在这个时候,可以在JsonConvert.SerializeObject()和JsonConvert.DeserializeObject<>()的Settings参数,设置TypeNameHandling = TypeNameHandling.All。如下:

JsonSerializerSettings setting = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All
};
_cb = Newtonsoft.Json.JsonConvert.DeserializeObject<IControl>(EditControl, setting);

 

不允许评论
粤ICP备17049187号-1