方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化

序列化类:Personnel

public class Personnel
{

public int Id { get; set; }

public string Name { get; set; }

}

执行序列化反序列化:

protected void Page_Load(object sender, EventArgs e)

{

Personnel personnel = new Personnel();

personnel.Id = 1;

personnel.Name = "小白";

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();

//执行序列化

string r1 = jsonSerializer.Serialize(personnel);

//执行反序列化

Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1);

}

r1输出结果:{"Id":1,"Name":"小白"}

可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段。

public class Personnel

{

[ScriptIgnore]

public int Id { get; set; }

public string Name { get; set; }

}

r1输出结果:{"Name":"小白"}

方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

序列化类:People

public class People

{

public int Id { get; set; }

public string Name { get; set; }

}

执行序列化反序列化

protected void Page_Load(object sender, EventArgs e)

{

People people = new People();

people.Id = 1;

people.Name = "小白";

DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType());

string szJson = "";

//序列化

using (MemoryStream stream = new MemoryStream())

{

json.WriteObject(stream, people);

szJson = Encoding.UTF8.GetString(stream.ToArray());

}

//反序列化

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))

{

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));

People _people = (People)serializer.ReadObject(ms);

}

}

szJson输出结果:{"Id":1,"Name":"小白"}

可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。

[DataContract]

public class People

{

[DataMember(Name = "id")]

public int Id { get; set; }

[IgnoreDataMember]

public string Name { get; set; }

}

输出结果: {"id":1}

C#实现JSON序列化与反序列化介绍的更多相关文章

  1. 几种常用的json序列化和反序列化工具介绍

    一.前言 Json序列化和反序列化工作中会时常用到,也是目前数据交互的常用格式,Rest风格的接口加上json格式的数据交互,真的是天作之合. 目前Json字符与Json对象的相互转换方式有很多,接下 ...

  2. Newtonsoft.Json 序列化和反序列化 时间格式

    From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...

  3. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

  4. Newtonsoft.Json 序列化和反序列化 时间格式 [转]

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  5. 序列化对象C++对象的JSON序列化与反序列化探索

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...

  6. C++对象的JSON序列化与反序列化探索

    一:背景 作为一名C++开发人员,我一直很期待能够像C#与JAVA那样,可以轻松的进行对象的序列化与反序列化,但到目前为止,尚未找到相对完美的解决方案. 本文旨在抛砖引玉,期待有更好的解决方案:同时向 ...

  7. 迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。

    Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Github : https://github.com/Dogwei/Swifter.Js ...

  8. Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解

    Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全   Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...

  9. [转]Newtonsoft.Json 序列化和反序列化 时间格式

    本文转自:http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeObj ...

随机推荐

  1. C# 连接SQL数据库 常用连接字符串

    一:C# 连接SQL数据库 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...

  2. javascript-智能社-笔记

    JavaScript是什么 JavaScript就是修改样式 编写JS的流程 布局:HTML+CSS 属性:确定要修改哪些属性 事件:确定用户做哪些操作(产品设计) 编写JS:在事件中,用JS来修改页 ...

  3. 免费安卓IOS测试API接口,后续会陆续增加接口

    各位博友好!开发的安卓或者ios的朋友们,经常会遇到想测试但是没有公开的api接口进行进行测试.但自己又不会开发服务端或者没有服务器,这里我免费提供了一整套API接口.欢迎大家调用,目标是方便大家. ...

  4. QT下自定义QQ聊天窗口tab控件

    1.用继承pushbutton派生类来实现tab按钮,里面加一个QPushbutton关闭按钮:(自定义类:CCustomTabButton) 2.多个tab按钮用QHboxLayout做容器: 3. ...

  5. JavaScript常用正则表达式与应用(一)

    JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...

  6. Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing--转

    原文:http://blog.csdn.net/sunny2038/article/details/6926079 最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一 ...

  7. hdu1047(Java)大数相加

    题目大意:输入n组数据,每组数据中又有若干长度不大于100的整数,以0结束每组数据的输入,求每组中数据之和.每两组数据输入之间有一行空格,输出也是如此. Integer Inquiry Time Li ...

  8. 集合(Collection,set,list,map)

    package cn.hncu.col.col; import java.util.ArrayList;import java.util.Collection;import java.util.Has ...

  9. web服务器决定支持多少人同时在线的因素

    经常遇到一些做WEB用户咨询服务器支持在线人数问题,在此做个简单介绍.非技术性讨论,如有疏漏或错误,敬请原谅和指导.以普通单路服务器为例,CPU处理多个进程,并非是同一时刻处理的,(可以精确到1/10 ...

  10. asp.net下载的方法1

    1. 首先新建一个用于进行下载处理的page页,如download.aspx,里面什么东西也没有. 2. 添加一个DownloadHandler类,它继承于IHttpHandler接口,可以用来自定义 ...