推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

开发者应当熟知的 C 序列化和反序列化

   2023-08-11 网络整理佚名2620
核心提示:什么是序列化/反序列化由序列化我们可以反推出所谓的反序列化就是将持久存储的数据还原为对象。,但是还有存在一种序列化/反序列化,那就是将对象序列化为二进制文件,将会二进制文件反序列化为对象。对对象尽心序列化和反序列化,代码如下对象进行序列化和反序列化,代码如下:反序列化为对象,使用方法是首先实例化,然后调用序列化/反序列化方法。具体序列化/反序列化方法如下:

今天我用这篇文章来讲解C#中的序列化和反序列化。 我们在开发中经常会用到这两个概念,但是我们大多数人只用到了其中的一部分,很多开发者并不知道剩下的部分。 可以说他们不知道。 因此,希望通过这篇文章,大家能够更好的掌握序列化和反序列化的知识。 闲话少说,让我们言归正传吧。

什么是序列化/反序列化

序列化和反序列化的概念存在于所有开发语言中。 所谓序列化就是将一个对象信息转换成可以持久存储的数据形式。 转换后可以方便的存储和传输。 因此,序列化主要用于平台之间的通信。 从序列化我们可以推断,所谓反序列化就是将持久化存储的数据恢复成对象。

C# 中的序列化/反序列化

在C#中,我们经常对JSON和XML进行序列化和反序列化,但还有一种序列化/反序列化,就是将对象序列化为二进制文件,将二进制文件反序列化为对象。 下面我将对这三种序列化和反序列化进行解释。

1.JSON

JSON的英文全称是一种轻量级的数据交换格式。 一种完全独立于语言的文本格式,易于人类阅读和编写,易于机器解析和生成。 JSON是目前互联网上主流的数据交换格式,也是很多开发语言配置文件的主流格式。

.NET中有两个类处理JSON,分别是 和 ,这两个类的功能基本相同。 位于命名空间 ...Json 下,必须使用它的功能以及属性标记成员。 位于命名空间.Web..下,通过名称和命名空间我们可以知道它主要用于网络通信,并且可以序列化任何类型的对象。 同样,.NET中也有一个强大的第三方JSON序列化/反序列化库.Json,它比前两个类使用起来方便得多。 下面我们分别解释一下这三种序列化/反序列化方法。

首先,我们需要引用项目中的命名空间。 这里需要注意的是,我们不仅需要添加对项目的引用..还需要添加引用..Web。 将这两个命名空间添加到命名空间后,就可以在代码中引入命名空间了。

..;

...杰森;

引入命名空间后,我们开始编写序列化类

[]

[]

{获取;设置;}

[]

{获取;设置;}

[]

{获取;设置;}

[]

{获取;设置;}

[]

[]

{获取;设置;}

[]

{获取;设置;}

在上面的代码中,我们看到特征被添加到了类的头部,特征也被添加到了类的属性中。 一个类一旦被声明,就意味着该类可以被序列化,并且可以在服务器和客户端之间传输。 只能传递声明类型的对象,并且只能传递成员属性,不会传递成员方法。 默认情况下,类中的所有成员属性都不会被序列化和传输。 如果需要传出成员数据,则需要在属性头中添加。

接下来我们将使用对象的专用序列化和反序列化,代码如下

([]参数)

#对象转JSON字符串

=

姓名=“汤姆”,

年龄=20,

性别=1,

=

城市=“纽约”,

路=“ABC”

};

//使用该方法序列化为JSON

=(());

=();

.(,);

字节[]字节=[.];

.=0;

.Read(字节,0,(int).);

=.UTF8.(字节);

.();

#

#字符串到对象

=(..());

=().();

.("姓名:"+.姓名);

.("性别:"+.性别);

.("年龄:"+.年龄);

.(":"+..城市+""+..道路);

#

.();

输出如下:

我们用之前定义的类来看看如何使用。 我们将从之前定义的类中删除所有总和。 如果我们想使用它,只需要引入.Web..命名空间即可。 代码如下所示:

.网络..;

接下来我们将使用对象进行序列化和反序列化,代码如下:

([]参数)

#序列化

=

姓名=“汤姆”,

年龄=20,

性别=1,

=

城市=“纽约”,

路=“ABC”

};

//初始化

=泽();

=.();

.();

#

# 反序列化

=.();

.("姓名:"+.姓名);

.("性别:"+.性别);

.("年龄:"+.年龄);

.(":"+..城市+""+..道路);

#

.();

从上面的代码我们可以看出,使用序列化和反序列化比类更方便。 上述代码运行结果如下:

.Json

.Json 函数有很多。 除了序列化和反序列化之外,还有Linq To Json、Json Path、XML等,本文我们只讲解序列化和反序列化。 在使用.Json之前,我们首先需要在nuget中搜索并安装它。 安装完成后,导入.Json。 代码如下:

.Json;

我们来看一下.Json的具体使用:

([]参数)

#序列化

=

姓名=“汤姆”,

年龄=20,

性别=1,

=

城市=“纽约”,

路=“ABC”

};

=.();

.();

#

# 反序列化

=.();

.("姓名:"+.姓名);

.("性别:"+.性别);

.("年龄:"+.年龄);

.(":"+..城市+""+..道路);

#

.();

上述代码的输出如下:

从代码中我们可以看到.Json的序列化和反序列化更加简单,简单到只需要一行代码就可以完成序列化和反序列化。

2.XML

在 JSON 出现之前,XML 是 上常见的数据交换格式和规范。 .NET 中提供了类,通过首先实例化然后调用序列化/反序列化方法,将对象序列化为 XML 并将 XML 反序列化为对象。 下面我们还是使用一开始定义的类来看看它的使用方法。 在使用之前,我们需要介绍一下.Xml的使用。 命名空间。

.Xml.;

具体序列化/反序列化方法如下:

([]参数)

#序列化

=

姓名=“汤姆”,

年龄=20,

性别=1,

=

城市=“纽约”,

路=“ABC”

};

=(());

使用(=(@"d:\123.xml",.))

.(,);

#

# 反序列化

使用(=(@"d:\123.xml",.))

=();

=.();

.("姓名:"+.姓名);

.("性别:"+.性别);

.("年龄:"+.年龄);

.(":"+..城市+""+..道路);

#

.();

这里需要注意一点,如果对象类的访问修饰符不是的话就会报错。 上述代码运行结果如下:

3. 二进制

序列化为二进制在实际开发中确实很少使用,但我觉得有必要说一下。 其用法与序列化/反序列化类似,先实例化,然后调用序列化/反序列化方法。 在序列化/反序列化之前,首先引入命名空间....并修改对象类如下:

[]

{获取;设置;}

{获取;设置;}

{获取;设置;}

{获取;设置;}

[]

{获取;设置;}

{获取;设置;}

在上面的代码中,我们在类的头部添加了特性,这意味着整个类对象需要被序列化。 如果我们不需要序列化某个属性,只需要给该属性添加特征即可。 我们看一下序列化和反序列化代码:

([]参数)

#序列化

=

姓名=“汤姆”,

年龄=20,

性别=1,

=

城市=“纽约”,

路=“ABC”

};

rmat=();

=路径。(@"D:\",@"321.txt");

使用(=(,.,.))

.(,);

#

# 反序列化

使用(=(,.打开,.))

.=0;

=().();

.("姓名:"+.姓名);

.("性别:"+.性别);

.("年龄:"+.年龄);

.(":"+..城市+""+..道路);

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON