码迷,mamicode.com
首页 > Web开发 > 详细

使用Json.Net处理.Net json序列化和反序列化继承类

时间:2015-05-23 20:07:29      阅读:706      评论:0      收藏:0      [点我收藏+]

标签:

以前一直没有怎么关注过Newtonsoft的Json.Net这个第三方的.NET Json框架,主要是我以前在开发项目的时候大多数使用的都是.NET自带的Json序列化类JavaScriptSerializer,但是最近在项目中需要序列化和反序列化一个实现接口的类,而如果使用JavaScriptSerializer的话就会出现问题,我们来看看如下场景。

 

首先我们有一个接口IPeople和一个实现了该接口的类Man

interface IPeople
{
    string Name { get; set; }
    int Age { get; set; }
}

class Man : IPeople
{
    public string Name { get; set; }

    public int Age { get; set; }
}

 


我们使用JavaScriptSerializer直接序列化IPeople接口

IPeople poeple = new Man();
poeple.Age = 25;
poeple.Name = "Scott";

JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
string textJson = jsSerializer.Serialize(poeple);
poeple = jsSerializer.Deserialize<IPeople>(textJson);

会得到序列化后的json文本textJson如下

{"Name":"Scott","Age":25}

我们可以看到在序列化后的json中没有任何属性说明这段json到底是由什么类序列化而来的,紧接着在JavaScriptSerializer执行jsSerializer.Deserialize<IPeople>(textJson)的时候就抛出了异常提示IPeople没有默认构造函数,也就是说JavaScriptSerializer不知道应该把textJson中的json反序列化为类Man。
技术分享

 

而如果我们使用的是Json.NET的话,就可以完美的实现接口接口IPeople的序列化和反序列化

 

使用Json.Net处理.Net json序列化和反序列化继承类

标签:

原文地址:http://www.cnblogs.com/OpenCoder/p/4524786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!