你的位置:首页 > 软件开发 > ASP.net > [.net 面向对象程序设计进阶] 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类

[.net 面向对象程序设计进阶] 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类

发布时间:2015-07-11 23:00:10
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类本节导读: 关于JSON序列化,不能不了解Json.net(Newtonsoft.Json)这款世界级的开源类库, ...

[.net get='_blank'>面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类

本节导读: 

关于JSON序列化,不能不了解Json.net(Newtonsoft.Json)这款世界级的开源类库,除了拥有良好的性能之外,功能也是非常强大的。

本节会详细说明这个类库。此外,对于不喜欢使用第三方类库的同学,会整理一个基于微软类库的通用Json类。 

读前必备: 

本节主要介绍一款第三方类库和一个自己整理封装的类库,说起到封装就想到.NET面向对象三大特性。有需要的朋友可以参考下面三篇。 

A.封装  [.net 面向对象编程基础]  (11) 面向对象三大特性——封装 

B.继承  [.net 面向对象编程基础]  (12) 面向对象三大特性——继承 

C.多态  [.net 面向对象编程基础]  (13) 面向对象三大特性——多态 

1. 第三方类库Newtonsoft.Json 

1.1  和.NET自带类库比较 

目前使用的三种JSON序列化和类库主要有: 

A. DataContractJsonSerializer (微软自带类库) 

B. JavaScriptSerializer (微软自带类库) 

C.Json.net 即Newtonsoft.Json (第三方开源Json类型) 

就性能而言,DataContractJsonSerializer 和 Newtonsoft.Json差距不大,JavaScriptSerializer 性能略差一些。

下图是一张来自Newtonsoft.net官方的性能测试图表。 

 [.net 面向对象程序设计进阶]  序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 

 功能方面,当然不用说Newtonsoft.net是专家做Json的开源库,自然功能强大一些。下面会将Newtonsoft.net一些比较实用的功能介绍一下。 

1.2  Newtonsoft.net简介

 最新版本:7.01 截止我发布本篇文章时 

官方地址:https://github.com/JamesNK/Newtonsoft.Json/releases 

我提供一个下载:http://files.cnblogs.com/files/yubinfeng/Newtonsoft.Json7.0.1-.net4.0.rar 

在打包的时候,为每个版本的.net都有一个dll,这上传是即于最高版本.net4.0版本的。 

官方提供的下载在国内真是相当的慢。 

1.3 常用序列化DataTable、DataSet、Entity

 三个使用方法都相似,我以DataSet为例介绍: 

使用前在项目中引用,这个就不用多说了  

//创建 DataTable 1DataTable dt1 = new DataTable("Top") ;      dt1.Columns.AddRange(new DataColumn[]{  new DataColumn { ColumnName = "Name", DataType = typeof(System.String) },  new DataColumn { ColumnName = "Age", DataType = typeof(System.Int32) },  new DataColumn { ColumnName = "MenPai", DataType = typeof(System.String) }});dt1.Rows.Add(new object[]{"周伯通", 22,"重阳宫" });dt1.Rows.Add(new object[]{"洪七公", 19,"丐帮" });dt1.Rows.Add(new object[]{"黄药师",55,"桃花岛" });dt1.Rows.Add(new object[]{"欧阳锋",49,"白驼山" });      //创建 DataTable 2DataTable dt2 = dt1.Clone();dt2.TableName = "Second";dt2.Rows.Add(new object[]{"郭靖",22,"丐帮"});dt2.Rows.Add(new object[]{"黄蓉",19,"丐帮"});dt2.Rows.Add(new object[]{ "梅超风", 55,"桃花岛"});dt2.Rows.Add(new object[]{ "杨康", 49,"金"});//创建DataSetDataSet ds = new DataSet("Master");ds.Tables.AddRange(new DataTable[]{ dt1,dt2});//序列化DataSet为Json字符串string myJsonStr = JsonConvert.SerializeObject(ds);Console.WriteLine(myJsonStr);

原标题:[.net 面向对象程序设计进阶] 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。