• 序列化与反序列化Serialize&Deserialize


    序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了。
    比如,一个计数器,数值为2,我们可以用字符串“2”表示。
    如果有个对象,叫做connter,当前值为2,那么可以序列化成“2”,反向的,也可以从“2”得到值为2的计数器实例。
    这样,关机时序列化它,开机时反序列化它,每次开机都是延续的。不会都是从头开始。

    序列化概念的提出和实现,可以使我们的应用程序的设置信息保存和读取更加方便。

    序列化有很多好处,比如,在一台机器上产生一个实例,初始化完毕,然后可以序列化,通过网络传送到另一台机器,然后反序列化,得到对象实例,之后再执行某些业务逻辑,得到结果,再序列化,返回第一台机器,第一台机器得到对象实例,得到结果。

    一、二进制序列化与反序列化

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    
    namespace Serialization
    {
        [Serializable]
        public class A
        {
            public string Name { get; set; }
            public string Id { get; set; }
        }
        class Program
        {
            static void Main(string[] args)
            {
                var a=new A {Name = "mk", Id = "121"};
                var formater = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                Stream stream =new FileStream("UserFileInfo.bin",FileMode.Create,FileAccess.Write,FileShare.None);
                formater.Serialize(stream ,a);
                stream.Close();
    
    
                stream = new FileStream("UserFileInfo.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
                var b=(A)formater.Deserialize(stream);
                stream.Close();
                Console.WriteLine("name{0}",b.Name);
                Console.WriteLine("Id{0}",b.Id);
                Console.Read();
            }
    
        }
    }

    二、XML的序列化与反序列化

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml.Serialization;
    
    namespace XMLSerialization
    {
        [Serializable]
        public class A
        {
            public string Name { get; set; }
            public string Id { get; set; }
        }
        class Program
        {
            static void Main(string[] args)
            {
                var a = new A { Name = "yq", Id = "121" };
                //var formater = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                //Stream stream = new FileStream("UserFileInfo.bin", FileMode.Create, FileAccess.Write, FileShare.None);
                XmlSerializer mySerializer=new XmlSerializer(typeof(A));
                Stream stream = new FileStream("UserFileInfo.xml", FileMode.Create, FileAccess.Write, FileShare.None);
                mySerializer.Serialize(stream, a);
                stream.Close();
    
    
                stream = new FileStream("UserFileInfo.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
                var b = (A)mySerializer.Deserialize(stream);
                stream.Close();
                Console.WriteLine("name{0}", b.Name);
                Console.WriteLine("Id{0}", b.Id);
                Console.Read();
            }
    
        }
    }
    UserFileInfo.xml返回内容
    <?xml version="1.0"?>
    <A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Name>yq</Name>
      <Id>121</Id>
    </A>
    

      



         

  • 相关阅读:
    python接口测试(二)——配置文件的使用
    python接口测试(一)——http请求及token获取
    jmeter接口测试--响应结果Unicode转码成中文
    jmeter接口测试--获取token
    jmeter接口测试--参数化
    Sysbench安装步骤及详情
    云数据库安装及使用
    npm start 和 npm run start的关系
    使用JS控制伪元素的几种方法
    html5新属性
  • 原文地址:https://www.cnblogs.com/iammackong/p/3255098.html
Copyright © 2020-2023  润新知