进阶之路—序列化及反序列化 Json 篇

本章,我们继续讲解序列化和反序列化的应用,之所以把 Json 单独列一篇有几个原因:Json 更符合现在人们在生产过程中的需求,体积小,效率高,而且在 Web 项目中基本都是使用 Json 与前端进行交互的,因为 Json 本身就是以文本的形式表现 javascript 对象的一种形式,其本质是一个字符串。在接下来的文章中,我会介绍三种 Json 序列化方式。

1.DataContractJsonSerializer:DataContractJsonSerializer 类帮助我们序列化和反序列化 Json ,他在程序集 System.Runtime.Serialization 下的 System.Runtime.Serialization.Json 命名空间里。

进阶之路—序列化及反序列化 Json 篇_第1张图片
json序列化发序列化代码

因为 Json 的本身是对对象的字符串表现形式,所以在使用 DataContractJson 序列化器的时候需要在创建序列化器的的同时传进对象类型,而且 DataContractJson 序列化器也只能对实体类对象进行操作,不能对 list 对象操作。


进阶之路—序列化及反序列化 Json 篇_第2张图片
生成的文件以及序列化后的json片段


进阶之路—序列化及反序列化 Json 篇_第3张图片
反序列化后的结果

可以看出,Json 格式的文本还是比较易读的,清晰规范

进阶之路—序列化及反序列化 Json 篇_第4张图片
json.cn

对比 XML 格式的文档,Json 虽然也好阅读,但是却有一个问题, XML 的标签结点是可以自定义的,也就意味着如果缺少结尾节点是不会有什么大的影响,最多就是不够规范,但是 Json 不同,没有结点的定义,导致只要出现一点不规范,就会造成文件无法读取的现象。

2.JavaScriptJsonSerializer: 通过 JavaScriptSerializer 来实现。它的名字空间为:System.Web.Script.Serialization 如果要使用它,还须添加

System.Web.Extensions 库文件引用


进阶之路—序列化及反序列化 Json 篇_第5张图片
使用javascript序列化器的后台代码

使用 javascript 序列化器是不需要传入对象类型的。

进阶之路—序列化及反序列化 Json 篇_第6张图片
javascript序列化器生成的文件


进阶之路—序列化及反序列化 Json 篇_第7张图片
反序列化出的实体对象

3.JSON.NET : 这种方式是通过第三方类库 newtonsoft.JSON 来实现的,首先我们们需要在 工具 -> NuGet包管理器 -> 解决方案的 NuGet 程序包 中将 newtonsoft.JSON 安装进去,如图:

进阶之路—序列化及反序列化 Json 篇_第8张图片


进阶之路—序列化及反序列化 Json 篇_第9张图片
搜索json.net

安装之后我们只需要在程序中引用 Newtonsoft.Json 命名空间就可以使用了

进阶之路—序列化及反序列化 Json 篇_第10张图片
通过Newtonsoft.json序列化的代码
进阶之路—序列化及反序列化 Json 篇_第11张图片
使用Newtonsoft.json生成的结果
进阶之路—序列化及反序列化 Json 篇_第12张图片
反序列化的结果

最后还要说一句的是,以上三种 Json 序列化的方式,从性能方面来讲,最好的是 NewTonSoft.Json 的第三方类库,而微软本身框架自带的方式性能却不及第三方,也是蛮有趣的。

你可能感兴趣的:(进阶之路—序列化及反序列化 Json 篇)