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

本章,我们继续讲解序列化和反序列化的应用,之所以把 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 的第三方类库,而微软本身框架自带的方式性能却不及第三方,也是蛮有趣的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 在编程中我们时常听到序列化和反序列化这两个词,但是对于一些刚入门的新手来讲,序列化和反序列化是什么东西,又不得而知...
    李九lijiu阅读 1,953评论 1 2
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,834评论 0 24
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 一、 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化de...
    步积阅读 1,434评论 0 10
  • “三八”女神节这天,我和闺蜜一起看了部美片―《一条狗的使命》,剧情看起来既轻松愉悦,又温暖感人,赚取了我不少宝贵的...
    陶语阅读 558评论 14 9