美文网首页
进阶之路—序列化及反序列化 Json 篇

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

作者: 李九lijiu | 来源:发表于2017-09-18 13:38 被阅读34次

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

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

json序列化发序列化代码

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

生成的文件以及序列化后的json片段 反序列化后的结果

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

json.cn

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

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

System.Web.Extensions 库文件引用

使用javascript序列化器的后台代码

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

javascript序列化器生成的文件 反序列化出的实体对象

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

搜索json.net

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

通过Newtonsoft.json序列化的代码 使用Newtonsoft.json生成的结果 反序列化的结果

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

相关文章

网友评论

      本文标题:进阶之路—序列化及反序列化 Json 篇

      本文链接:https://www.haomeiwen.com/subject/wefesxtx.html