序列化介绍:

把对象用一种新的格式来表示。

系列化只序列化数据。

序列化不建议使用自动属性

为什么要序列化:

将一个复杂的对象转换流,方便存储与信息交换。

class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "张三";
person.Age = ;
// json 序列化 变成字符串
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string msg = javaScriptSerializer.Serialize(person);
Console.WriteLine(msg);
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

二进制序列化:

就是将对象变成流的过程,把对象变成byte[ ]。

class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "张三";
person.Age = ;
// 二进制序列化注意点:
//1、被序列化对象类型必须标记为可序列化
//2、被序列化的所有父类也必须标记为可序列化
//3、被序列化的对象的类型中字段的类型也要标记 //二进制序列化步骤:
//1、创建序列化器
BinaryFormatter bf = new BinaryFormatter();
// 1.1 创建一个文件流。
using(FileStream fsWrite =new FileStream("person.bin", FileMode.Create))
{
//2、开始执行序列化。
bf.Serialize(fsWrite, person);
}
Console.WriteLine("序列化完毕"); }
}
[Serializable]
class Person:Animal
{
public string Name { get; set; }
public int Age { get; set; }
public Car BenChi { get; set; }
}
[Serializable]
public class Animal
{
public void Eat()
{
Console.WriteLine("eat food...");
}
}
[Serializable]
public class Car
{ }

反序列化:

 class Program
{
static void Main(string[] args)
{
//二进制反序列化注意的问题:
//1、必须获取被系列化的对象的类型所在的程序集。因为它要根据序列化文件还原该对象,而序列化文件中
//只包含数据信息,而不包含其类型的相关信息、方法相关信息等,这些信息在对象序列文件中都没有。 //步骤:
//1、创建序列化器。
BinaryFormatter bf = new BinaryFormatter();
//1.1 创建读取文件的文件流。
using(FileStream fsRead=new FileStream("person.bin", FileMode.Open))
{
//2、执行反序列化。
object obj = bf.Deserialize(fsRead);
Person person = (Person)obj;
Console.WriteLine(person.Name);
}
Console.WriteLine("ok"); }
}
[Serializable]
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

练习:添加对象到array list中,进行序列化和反序列化。

序列化:

class Program
{
static void Main(string[] args)
{
ArrayList arrayList = new ArrayList();
arrayList.Add("张三");
arrayList.Add();
//创建序列化容器
BinaryFormatter bf = new BinaryFormatter();
//创建文件流
using(FileStream fs=new FileStream("txt.txt", FileMode.Create))
{
//执行序列化
bf.Serialize(fs, arrayList);
}
Console.WriteLine("序列化完毕"); }
}

反序列化:

class Program
{
static void Main(string[] args)
{
//创建序列化容器
BinaryFormatter bf = new BinaryFormatter();
//创建读取的文件流
using(FileStream fs=new FileStream("txt.txt", FileMode.Open))
{
//执行反序列化
object obj= bf.Deserialize(fs);
ArrayList arrayList = (ArrayList)obj;
foreach (var item in arrayList)
{
Console.WriteLine(item);
}
} }
}

C#序列化与反序列化。的更多相关文章

  1. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

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

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  3. Java 序列化与反序列化

    1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...

  4. C#中怎样实现序列化和反序列化

    我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的 因为我们如果想要将一个对象持久化到文件中 如 ...

  5. Java序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  6. XPatchLib 对象增量数据序列化及反序列化器 For .Net

    在日常的软件开发和使用过程中,我们发现同一套系统的同一配置项在不同的客户环境中是存在各种各样的差异的.在差异较为分散时,如何较好的管理这些差异,使得维护过程能够更加安全和快速,一直在这样那样的困扰着开 ...

  7. c# Json 自定义类作为字典键时,序列化和反序列化的处理方法

    一般情况下,Newtonsoft.Json.dll 对 Dictionary<int,object>.Dictionary<string,object>等序列化与反序列化都是成 ...

  8. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  9. 序列化,反序列化和transient关键字

    一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...

  10. C#对象序列化与反序列化zz

      C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...

随机推荐

  1. PYTHON进阶(3)

    学习内容: 1.Python模块redis 2.Python模块memcach 3.Python模块SQLAlchemy 一.Python模块redis redis介绍 二.Python模块memca ...

  2. 10-Mock模拟接口返回数据

    1.安装mock 方法一:pip安装 命令行直接输入:pip install mock 方法二:官网下载mock安装包安装 下载安装包后,解压,命令行进入解压目录,执行python setup.py ...

  3. 6-使用requests库封装类处理get/post请求

    1.request安装 1)pip安装,直接pip install requests 2)下载离线包安装,加压后,命令行进入路径,执行python setup.py install 2.创建工程 注意 ...

  4. 获取resource下文件

    Resource resource = new ClassPathResource(certPath);File file= resource.getFile();

  5. Asp.net Security框架(2)

    Asp.net 的Security框架除了提供Cookies,OAuth,ActiveDirectory等多个用户认证实现,基本上已经满足业务项目的开发需要了. 当需要实现OAuth2.0服务器端实现 ...

  6. 1.1.4 PROB Greedy Gift Givers

    Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...

  7. h5面试题

    一.匿名函数实现阶乘第一种写法: 43 > F = fun(Func, 1) -> 1;43 > (Func, N) -> N * Func(Func, N - 1) end. ...

  8. 解决Java中There is no getter for property XXX'XXX' in 'class XXX'的问题

    当你出现There is no getter for property XXX'XXX' in 'class XXX'时, 就是在你的这个类中没有找到你这个属性. 检查两个地方 1.你的返回值类型是否 ...

  9. python 中几种基本的矩阵操作应用

    在图像处理中,python 的矩阵运算经常会用到一些简单的操作,可是,由于好久没用,很多东西还是忘记了,这里做个备忘: #-*-coding:utf-8-*- import numpy as np a ...

  10. 搭建gitlab本地服务

    一本正经的搞事情 改变懒惰,成就心中的自己,并非难事 博客园 首页 新随笔 联系 管理 订阅 随笔- 40  文章- 0  评论- 5  gitlab服务部署及使用   目录 一.什么是gitlib ...