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

序列化

序列化分为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. Asp.net MVC 与 Asp.net Web API 区别

    Asp.Net Web API VS Asp.Net MVC 1.Asp.net MVC 是用来创建返回视图(Views)与数据的Web应用,而Asp.net Web API是一种简单轻松地成熟的HT ...

  2. PS抠图神器:KNOCKOUT 2.0

    从优设上转载~~太好用了,保存下来以备不时之需. 本人亲身实践~~先看使用成果~~哈哈~~ 原版图 : 抠过的图: 主要看飘逸的发丝~~~而且全程操作不超过5分钟!! 下载地址: http://vdi ...

  3. Phalcon 的 bootstrap.php 自动加载完成;非常人性化的设计

    <?php /** * Bootstraps the application */ use Phalcon\DI\FactoryDefault as PhDi, Phalcon\Config a ...

  4. Automatically watermark all uploaded photos (给所有上传的相片加水印)

    Hello, This mod automatically watermark all uploaded photos. Price: FREE, enjoy. You will have to ed ...

  5. 转:Sharethrough使用Spark Streaming优化实时竞价

    文章来自于:http://www.infoq.com/cn/news/2014/04/spark-streaming-bidding 来自于Sharethrough的数据基础设施工程师Russell ...

  6. $cordovaDialogs使用时遇到的问题

    1:按照http://ngcordova.com/docs/plugins/dialogs/文档介绍进行安装使用: //标题栏 .controller('TitleCtrl', function($s ...

  7. Ansible二三事

    现在,慢慢测试一下ANSIBLE的功能,不过,总体感觉是,比SALTSTACK运行要慢,好像还有点点不稳定.... 但,在局域环境的表现,还是不错的... ~~~~~~~~~~~~~ 有几个小事要注意 ...

  8. java四种创建对象的方法

    1.用new语句创建对象,这是最常见的创建对象的方法.   2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance ...

  9. Spring boot将配置属性注入到bean类中

    一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.c ...

  10. 使用getGenericSuperclass()和getActualTypeArguments()将DAO做成泛型

    一.getGenericSuperclass()和getActualTypeArguments()基本用法: import java.lang.reflect.ParameterizedType; p ...