序列化的目的:将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

序列化

序列化分为JSON 序列化,XML序列化,二进制序列化

准备工作,新建一个Person类

    [Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

该类用[Serializable]标签表示为可序列化

准备工作,创建该类的示例

   Person p = new Person() { Name = "张三", Age =  };

一,JSON序列化和反序列化

1,JSON序列化

    /*json序列化*/
var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var str = javaScriptSerializer.Serialize(p);

结果:

2,JSON反序列化

             /*json 反序列化*/
var jsonObject = javaScriptSerializer.Deserialize(str, p.GetType());
Console.WriteLine((jsonObject as Person).Name);
Console.Read();

3,JSON序列化还有一种方式

  /*json序列化*/
DataContractJsonSerializer dcjs = new DataContractJsonSerializer(p.GetType());
MemoryStream ms = new MemoryStream();
dcjs.WriteObject(ms, p);
var s = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
/*反序列化*/
MemoryStream ms1 = new MemoryStream(Encoding.UTF8.GetBytes(s));
var objPerson = dcjs.ReadObject(ms1) as Person;

使用这个类的时候,会在序列化的JSON字符串带有 K__BackingFideId 前缀

如下图;

当Person 类中没有[Serializable] 标签的时候一切都恢复正常了

二,XML序列化和反序列化

   /*xml序列化*/
FileStream fsXml = new FileStream("1.xml", FileMode.Create, FileAccess.ReadWrite);
System.Xml.Serialization.XmlSerializer xsl = new XmlSerializer(p.GetType());
xsl.Serialize(fsXml, p);
fsXml.Dispose(); /*xml反序列化*/
FileStream fsDeXml = new FileStream("1.xml", FileMode.Open, FileAccess.ReadWrite);
var Xmlobj = xsl.Deserialize(fsDeXml);
fsDeXml.Dispose();

三,二进制序列化和反序列化

             /*二进制序列化*/
FileStream fsBin = new FileStream("2.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsBin, p);
fsBin.Dispose(); /*二进制反序列化*/
FileStream fsBinDes = new FileStream("2.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryFormatter bfDes = new BinaryFormatter();
var binObject = bfDes.Deserialize(fsBinDes);

.net 中序列化和反序列化的使用的更多相关文章

  1. Java 中序列化与反序列化引发的思考?

    java 中序列化指从对象转变为 二进制流的过程中需要进行序列化,而反序列化指二进制流转换为java 对象.那么有的时候java 存储到数据库不需要序列化, 而计算机系统本质存储的就是二进制文件,数据 ...

  2. php中序列化与反序列化

    解析PHP多种序列化与反序列化的方法 序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更 ...

  3. JAVA中序列化和反序列化

    一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失(java回收机制)但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运 ...

  4. php中序列化与反序列化在utf8和gbk编码中测试

    在php中如果我们统一编码是没有什么问题了,但是很多朋友会发现一个问题就是utf8和gbk编码中返回的值会有所区别: php 在utf8和gbk编码下使用serialize和unserialize互相 ...

  5. java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

    package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.Fi ...

  6. java开发中序列化与反序列化起到的作用

    基本概念: 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象. 这两个过程结合起来,能够轻松地存储和数据传输. 特别在网络传输中,它的作用显得尤为重要.我们 ...

  7. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

  8. JAVA中序列化和反序列化中的静态成员问题

    关于这个标题的内容是面试笔试中比较常见的考题,大家跟随我的博客一起来学习下这个过程. ? ? JAVA中的序列化和反序列化主要用于: (1)将对象或者异常等写入文件,通过文件交互传输信息: (2)将对 ...

  9. c#中序列化和反序列化的理解

    using System.IO;using System.Runtime.Serialization.Formatters.Binary; 序列化:对象转化为文件的过程(字节流) 反序列化:文件(字节 ...

随机推荐

  1. Java学习----反复做某件事情

    for循环: public class TestFor{ public static void main(String[] args){ for(int x = 1; x < 3; x++) { ...

  2. chrome浏览器调试

    我们在开发前端代码的时候经常会遇到要调试css,js代码的时候,以前在调试的时候可能需要修改了css代码,然后在前台看一下样式,js也是一样的,可能会用alert或者是console.log输出,然后 ...

  3. 离线安装maven,重新打开eclipse报错处理方法

    报错截图如下 1.eclipse 添加 jre Window -> Preferences -> Java -> Installed JREs If you can’t find a ...

  4. redgate

    http://www.cnblogs.com/VAllen/archive/2012/09/08/SQLPrompt.html http://www.cnblogs.com/dotLive/archi ...

  5. Windows 7 mklink命令详解

    mklink是Windows 7下的一个类似于linux下In的命令,其作用是在NTFS文件系统中创建文件或目录的链接(类似于桌面快捷方式).如果加以利用其发挥的作用是非常的大的,不仅可以帮助我们节省 ...

  6. How to Install Linux, Apache, MySQL, PHP (LAMP) stack on CentOS 6 【Reliable】

    About LAMP LAMP stack is a group of open source software used to get web servers up and running. The ...

  7. -_-#【Canvas】measureText, translate, drawImage

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. delphi 自定义消息

    delphi 自定义消息     消息描述 Tmsg是   Windows系统用来记录描述一个具体的windows消息的.就是windows   用于封装应用程序及系统程序发生的消息,它是操作系统使用 ...

  9. 《Ruby语言入门教程v1.0》学习笔记-02

    9.18 第四章 一切都是对象 这个章节的例子都举得很浅显易懂,而且作者的语言= =噗,委实生动有趣啊是~~ 4.1  两种思维方式 初期的编程思想是:以“如何做”为指导来编写代码.这时期的编程语言叫 ...

  10. Spark计算模型-RDD介绍

    在Spark集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(Resilient Distributed DataSet,RDD),它是逻辑集中的实体,在集群中的多台集群上进行数据分区.通 ...