浅析JSON序列化与反序列化
发布时间:2024-03-22 12:50:05
方法一:引入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}
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 我们在做网站的时候,网站后台系统一般都会用到web编辑器,今天笔者就给大家推荐一款百度UEditor编辑器。关于这款百度UEditor编辑器
- 1.索引问题索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题。本章节将对MySQL中的索引
- iframe标签在网页中可以创建一个内嵌框架,通过指定src属性来调用另一个网页文档的内容。和frameset一样,用它来对网页结构进行拆分
- 本文实例讲述了Python统计文件中去重后uuid个数的方法。分享给大家供大家参考。具体如下:利用正则表达式按行获取日志文件中的的uuid,
- 定义字典 dic = {'a':"hello",'b':"how",
- Python有一随机函数可以产生[0,1)区间内的随机数,基于此函数生成随机分布在任意三角形内的点由数学知识得知:几何体的向量表达形式直线:
- 假设要生成一千万个随机数,常规的做法如下:var numbers = [];for (var&nbs
- 在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下:subplo
- 主要步骤:import shutilshutil.copyfile(old_image,new_image)完整:这里要做的是,将原图片复制
- 方式1:在pygame中使用pygame.event.get()方法捕获键盘事件,使用这个方式捕获的键盘事件必须要是按下再弹起才算一次。示例
- 之前在一个web系统的设计中,和另一个设计师讨论,“保存”和“取消”按钮该怎么设计。我的观点是,保存是比取消更常用的按钮,也是用户的主要目的
- 摘要django框架本身自带有登录注册,也可以自己写登录注册,下面将介绍这这2种方式实登录注册一、自己写登录注册登出1.注册regist注册
- 1. 场景描述一直做java,因项目原因,需要封装一些经典的算法到平台上去,就一边学习python,一边网上寻找经典算法代码,今天介绍下经典
- 题目:请求出任意区间[a,b]的所有素数,简单考虑实用性这道题看起来应该很easy是吧,但任意区间(这个问题有没get 到)Afanty的分
- 1. 引言星号* 往往被称为乘法运算符,是所有程序中最为常用的运算符号之一,在Python 中,星号还有很多隐藏的强大功能。本文将用最容易理
- 简单说明:思路:从数据岛menuXML中读取数据,从树的根节点开始分析树,利用 hasChildNodes() [方法:是否含有子节点 ]
- 场景当我提交了本次修改到本地和远程分支后,发现我本次提交还少了一些修改内容,或者说本次修改是完全错误的,然而也push到远程仓库去了。如何回
- 1、首先在系统盘中查找scrrun.dll,如果存在这个文件,请跳到第三步,如果没有,请执行第二步。 2、在安装文件目录i386中找到scr
- python根据字典的键来删除元素的方法:可以利用pop()方法来进行删除。pop()方法可以删除字典定键key及对应的值,并返回被删除的值
- 内容摘要:本文介绍了asp使用正则表达式自动解析远程图片地址并下载保存的方法,值得收藏!一、使用正则表达式Regexp匹配取得原页中的图片的