C# - .NET自带的两种JSON序列化

http://www.cnblogs.com/yubinfeng/p/4637165.html

Serialization,Deserialize

程序集:System.Web.Extensions.dll

命名空间:System.Web.Script.Serialization

类:Serialization,Deserialize

///<summary>/// 类:武林高手
/// MartialArtsMaster
///</summary>
[DataContract]
publicclass MartialArtsMaster
{
    [DataMember]
    ///<summary>/// 编号
    ///</summary>publicint id { get; set; }
    [DataMember]
    ///<summary>/// 姓名
    ///</summary>publicstring name { get; set; }
    [DataMember]
    ///<summary>/// 年龄
    ///</summary>publicint age { get; set; }
    [DataMember]
    ///<summary>/// 门派
    ///</summary>publicstring menpai { get; set; }
    [DataMember]
    ///<summary>/// 武学
    ///</summary>public List<Kongfu> kongFu { get; set; }

    ///<summary>/// 级别
    ///</summary>publicint level { get; set; }
}

///<summary>/// 类:武学
/// Kongfu
///</summary>[DataContract]
publicclass Kongfu
{
    [DataMember]
    ///<summary>/// 武学名称
    ///</summary>publicstring kongfuName { get; set; }

    [DataMember]
    ///<summary>/// 杀伤力
    ///</summary>publicint lethality { get; set; }
}
List<MartialArtsMaster> masterList = new List<MartialArtsMaster>();
//增加几个武林高手
masterList.Add(new MartialArtsMaster()
{
    id = 1,
    name = "令狐冲",
    age = 23,
    menpai = "华山",
    kongFu = new List<Kongfu>() { new Kongfu() { kongfuName = "独孤九剑", lethality = 100 }, new Kongfu() { kongfuName = "易筋经", lethality = 100 } },
    level = 10
});

masterList.Add(new MartialArtsMaster()
{
    id = 2,
    name = "黄药师",
    age = 55,
    menpai = "桃花岛",
    kongFu = new List<Kongfu>() { new Kongfu() { kongfuName = "弹指神通", lethality = 100 } },
    level = 10
});

masterList.Add(new MartialArtsMaster()
{
    id = 3,
    name = "段誉",
    age = 20,
    menpai = "天龙寺",
    kongFu = new List<Kongfu>() { new Kongfu() { kongfuName = "凌波微步", lethality = 100 }, new Kongfu() { kongfuName = "六脉神剑", lethality = 100 } },
    level = 10
});

masterList.Add(new MartialArtsMaster()
{
    id = 4,
    name = "乔峰",
    age = 33,
    menpai = "丐帮",
    kongFu = new List<Kongfu>() { new Kongfu() { kongfuName = "降龙十八掌", lethality = 100 }, new Kongfu() { kongfuName = "打狗棒法", lethality = 100 } },
    level = 10
});

Serialization 序列化

//程序集:System.Web.Extensions.dll
//命名空间:System.Web.Script.Serialization
//类:Serialization,Deserialize
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
//执行序列化string strJson2 = jsonSerializer.Serialize(masterList);
Console.WriteLine(strJson2);

Deserialize 反序列化

//执行反序列化
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
List<MartialArtsMaster> newMasterList = jsonSerializer.Deserialize<List<MartialArtsMaster>> (strJson2);
string result = String.Empty;

Func<List<Kongfu>, string> kongFu = delegate (List<Kongfu> kongfu) { string kflist = String.Empty; kongfu.ForEach(m => kflist += "武功名称:" + m.kongfuName + ";杀伤力" + m.lethality + "\n"); return kflist; };
newMasterList.ForEach(m => result += "大侠编号:" + m.id + " 大侠名字:" + m.name + " 年龄:" + m.age + " 门派:" + m.menpai + " \n所学武功:\n" + kongFu(m.kongFu));

Console.WriteLine(result);
时间: 2024-10-11 07:00:56

C# - .NET自带的两种JSON序列化的相关文章

ServiceStack.Text / Newtonsoft.Json 两种json序列化性能比较

JSON序列化现在应用非常多,尤其在前后端分离的情况下,平常大多数C#下都使用Newtonsoft.Json来操作,量少的情况下,还可以忽略,但量大的情况下就要考虑使用ServiceStack.Text来操作,序列化性能差不多,反序列化性能要高一倍左右 int count = 10000; User user = new User() { Id = 1, Name = "tyh", AddTime = DateTime.Now, Age = 15, Status = true }; s

zabbix使用自己编写脚本模板和zabbix自带模板两种方法添加对指定进程和端口的监控

zabbix使用自己编写脚本模板和zabbix自带模板两种方法添加对指定进程和端口的监控 1.自带监控模板进行os的监控 进入/usr/local/zabbix/etc/zabbix_agentd.conf 配置文件修改 LogRemoteCommands=1     ###开启脚本功能 Server=192.168.5.129     ##修改zabbix指向的服务器: 重启zabbix_agentd.zabbix_server服务 在配置-->主机-->添加主机--> 配置主机信息主

最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)

导读 1. 什么是序列化? 2. 为什么要序列化?好处在哪里? 3. C++对象序列化的四种方法 4. 最常用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯.这个将 程序数据转化成能被存储并传输的格式的过程被称为"序列化"(Serialization),而它的逆过程则可被称为"反序列化" (Deserialization). 简单

lua中,两种json和table互转方法的效率比较

lua中json和table的互转,是我们在平时开发过程中经常用到的.比如: 在用lua编写的服务器中,如果客户端发送json格式的数据,那么在lua处理业务逻辑的时候,必然需要转换成lua自己的数据结构,如table.此时,就会用到table和json格式的互转. 在用lua编写的服务器中,如果我们通过redis来存储数据,由于redis中不存在table这种数据结构,因此,我们可以选择将table转换成json字符串来进行存储.在数据的存取过程中,也会用到table和json格式的互转. 以

最经常使用的两种C++序列化方案的使用心得(protobuf和boost serialization)

导读 1. 什么是序列化? 2. 为什么要序列化?优点在哪里? 3. C++对象序列化的四种方法 4. 最经常使用的两种序列化方案使用心得 正文 1. 什么是序列化? 程序猿在编写应用程序的时候往往须要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的还有一台计算机上以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为"序列化"(Serialization),而它的逆过程则可被称为"反序列化"(Deserialization). 简

iOS拼接json字符串的两种方式

两种json字符串拼接的方法如下: + (NSString *)UIUtilsFomateJsonWithDictionary:(NSDictionary *)dic { NSArray *keys = [dic allKeys]; NSString *string = [NSString string]; for (NSString *key in keys) { NSString *value = [dic objectForKey:key]; value = [NSString strin

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

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能不了解Json.net(Newtonsoft.Json)这款世界级的开源类库,除了拥有良好的性能之外,功能也是非常强大的. 本节会详细说明这个类库.此外,对于不喜欢使用第三方类库的同学,会整理一个基于微软类库的通用Json类. 读前必备: 本节主要介绍一款第三方类库和一个自己整理封装的类库,说起到封装

C#中JSON序列化和反序列化

json序列化和反序列化帮助类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.IO; using System.Text.RegularExpressions; using System.We

JFreeChart与AJAX+JSON+ECharts两种处理方式生成热词统计可视化图表

本篇的思想:对HDFS获取的数据进行两种不同的可视化图表处理方式.第一种JFreeChar可视化处理生成图片文件查看.第二种AJAX+JSON+ECharts实现可视化图表,并呈现于浏览器上.   对此,给出代码示例,通过网络爬虫技术,将上传到HDFS的新浪网新闻信息实现热词统计功能,通过图表的柱状图来显示出来. ------> 目录: 1.JFreeChart可视化处理(生成本地图片) [1]HDFS文件读取 [2]JDFreeChart库应用 2.AJAX+JSON+EChart生成可视化图