.net实现序列化与反序列化实例解析

序列化与反序列化是.net程序设计中常见的应用,本文即以实例展示了.net实现序列化与反序列化的方法。具体如下:

一般来说,.net中的

序列化其实就是将一个对象的所有相关的数据保存为一个二进制文件

(注意:是一个对象)


而且与这个对象相关的所有类型都必须是可序列化的所以要在相关类中加上 [Serializable]特性

对象类型包括:对象本身包含的类型,父类


拥有需要的对象之后:

1.将对象转换为二进制数据 使用专门的对像进行转换 BinaryFormatter

2.将二进制数据写入到文件 FileSteam

反序列化则是把二进制文件转换为一个对象

示例代码如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      Person per;//将要被序列化的对象
      Console.WriteLine("------序列化与反序列化------");
      Console.WriteLine("是否读取已经序列化的对象per");
      string str = Console.ReadLine();
      if (str == "yes")
      {
        if (!File.Exists("save.bin"))
        {
          Console.WriteLine("你还没有将per序列化");
          return;
        }
        using (FileStream fs = new FileStream("save.bin", FileMode.Open))
        {
          BinaryFormatter bf = new BinaryFormatter();
          per = bf.Deserialize(fs) as Person;//将二进制数据转换为per对象
          per.SayHi();
          Console.ReadLine();
        }
      }
      else
      {
        per = new Person();
        per.Name = "小李";
        using(FileStream fs=new FileStream("save.bin",FileMode.Create))
        {
          BinaryFormatter bf = new BinaryFormatter();
          bf.Serialize(fs,per);//将per对象转换成二进制数据,并保存。
          Console.WriteLine("序列化成功");
          Console.ReadLine();
        }
      }
    }
  }
  [Serializable]
  class Person
  {
    public string Name;
    public void SayHi()
    {
      Console.WriteLine("hello {0}",Name);
    }
  }
}

相信本文实例对于大家进一步理解.net的序列化与反序列化有一定的借鉴帮助作用。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  .net实现序列化与反序列化实例解析

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23656.html

相关内容

C#事件实例详解

C# for循环的经典案例集锦

C#实例代码之抽奖升级版可以经表格数据导入数据库,抽奖设置,补抽

C#编程和Visual Studio使用技巧(下)


C#中图片旋转和翻转(RotateFlipType)用法分析

C#实现百分比转小数的方法

C#使用Socket上传并保存图片的方法

C#显示文件夹下所有图片文件的方法

时间: 2024-10-03 14:01:02

.net实现序列化与反序列化实例解析的相关文章

C#序列化与反序列化实例

本文实例讲述了C#序列化与反序列化的方法.分享给大家供大家参考.具体分析如下: 把"对象"转换为"字节序列"的过程称为对象的序列化.     把"字节序列"恢复为"对象"的过程称为对象的反序列化. 序列化 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; usi

PHP序列化以及反序列化系列[1]--PHP序列化格式的写法

反序列化:对单一的已序列化的变量进行操作,将其转换回 PHP 的值(zval). PHP序列化方式 PHP在序列化的时候会将相应的变量以对应的键值进行储存. 将一个类序列化的话,处理代码主要的 文件:ext/standard/var.c 中,如下. php_var_serialize_class()函数: static void php_var_serialize_class(smart_str *buf, zval *struc, zval *retval_ptr, HashTable *va

ASP.NET MVC 网站开发总结(六)——简谈Json的序列化与反序列化

首先,先简单的谈一下什么是序列化与反序列化,序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化(Deserialization)对象的状态,重新创建该对象. 一般我们把Json的序列化与反序列化用在哪些地方呢?对于网站开发来说,一般我们会用Json来进行前台和后台的数据传递(常与Ajax一起使用),而这个过程就涉及到了Json的序列化与反序列化. 那么我们就来简单看

使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象),在这篇文章中我将通过JToken.JObject和JArray来动态解析JSON对象,使它很容易创建和检索的JSON内容而无需基础类型.通过JObject和JArray创建JSON对象我们先用非常简单的方法来动态创建一些JSON,可通过JToken派生的JSON.NET对象来进行,最常见的JTo

C#序列化与反序列化(Serialize,Deserialize)实例详解

这篇文章主要介绍了C#序列化与反序列化(Serialize,Deserialize)的方法,实例分析了C#序列化与反序列化的常见技巧,需要的朋友可以参考下 本文实例讲述了C#序列化与反序列化(Serialize,Deserialize)实现方法.分享给大家供大家参考.具体分析如下: 如果要保存运行程序过程的数据要么保存到数据库中,要么新建一个普通的文件,然后把数据保存进去.但是这两者有个缺点就是,不能把原有数据的结构也保存进去.比如一个类中的字段值保存进去后再读取出来必须再解析下才行.序列化技术

JSON序列化和反序列化的实例

之前有项目中使用到了Json的序列化和反序列化,现在将使用的实例记录下来以备查阅.如有不妥,请指教. 代码的最终目的是得到一个符合 resultClass<List<rtnGetFindMyCar>> 要求的JSON字符串 JsonHelper.cs public class JsonHelper { /// <summary> /// JSON序列化 /// </summary> public static string JsonSerializer<

Serializable 指示一个类可以序列化;ICloneable支持克隆,即用与现有实例相同的值创建类的新实例(接口);ISerializable允许对象控制其自己的序列化和反序列化过程(接口)

Serializable : 序列化是指将对象实例的状态存储到存储媒体的过程.在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流.在随后对对象进行反序列化时,将创建出与原对象完全相同的副本. 在 面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡.只要您对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行.例 如,简单的二进制序列化不能满足需要,或者,由于特定原因需要确定类中那些字段需要序列化. 基本序列化

Python 解析模块 异常模块 响应模块 序列化和反序列化组件

解析模块(后端根据指定的解析规则来解析前端发来的数据) 为什么要配置解析模块 1)drf给我们通过了多种解析数据包方式的解析类 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些数据不解析 3)全局配置就是针对每一个视图类,局部配置就是针对指定的视图来,让它们可以按照配置规则选择性解析数据 源码入口 # APIView类的dispatch方法中 request = self.initialize_request(request, *args, **kwargs) # 点进去 #

c# xml序列化和反序列化。也就是xml的解析和反解析。

用习惯了newTownSoft.json 的json反序列化.碰到xml是真的不习惯. 每次json反序列化都是直接把json丢到bejson网站生成一个实体类,稍微修改修改一点点变量名.然后直接newTownSoft反序列化,一下就得到一个实体类了.今天调某个接口,碰到xml. 记录如下. xml <response> <functionID>setItemsPics</functionID> <time>2017-09-07 15:51:04</t