zoukankan      html  css  js  c++  java
  • 序列化到底是神马?

     简明扼要版:

    Serialization is the process of converting unordered data (such as an object) into a series of tokens 。(stackoverflow

    序列化一词的本意就是将数据排列成一系列series)的原子性小词(token),以便存储和传输。

    复杂饶舌版:

    serialization is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer, or transmitted across a network connection link) and resurrected later in the same or another computer environment。(wiki

    序列化就是指将数据结构或对象转化为一种可以被存储(比如说,在文本、内存或通过网络链接传输)的格式,并且可以在相同或另一台电脑的环境中复原的过程。

    补充:在计算机术语中,marshalling(配置整齐)/unmarshalling,deflating(紧缩)/inflating也是指相同的意思。

    C#中的实践:

    BinaryFormatter是用于将对象序列化到输出流。一般就是将对象存储在磁盘上。

    这个流中存储了该对象的精确的二进制副本。

    Person p = new Person();
    p.Id = "123";
    p.Name = "Benjamin";
    
    FileStream stream = new FileStream("D:\person.bin", FileMode.Create, FileAccess.Write, FileShare.None);
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream, p);
    stream.Close();

    SoapFormatter则是是序列化为Soap格式。

    Person p = new Person();
    p.Id = "123";
    p.Name = "Benjamin";     
    FileStream stream = new FileStream("C:\person.txt", FileMode.Create, FileAccess.Write,FileShare.None);
    SoapFormatter formatter = new SoapFormatter();
    formatter.Serialize(stream, p);
    stream.Close();

    打开person.txt,结果是一个符合SOAP协议的文件:

     

    XmlSerializer则是序列化为Xml格式:

    Person p = new Person();
    p.Id = "123";
    p.Name = "Benjiamin";
    FileStream stream = new FileStream("C:\person.xml", FileMode.Create, FileAccess.Write,
    FileShare.None);
    XmlSerializer xmlserializer = new XmlSerializer(typeof(Person));
    xmlserializer.Serialize(stream, p);
    stream.Close();

    打开person.txt,结果是一个符合XML文档格式的文件:

    而现在经常是使用 json作为文件传输格式,因此最常用的是以下方法:

    NewtonSoft.Json dll的序列化和反序列化

     string s1 = JsonConvert.SerializeObject(p);  
    Person p1 = JsonConvert.DeserializeObject<Person>(s1);

    以及.net自带的JavaScriptSerializer:

     string s2 = new JavaScriptSerializer().Serialize(p);
     Person p2= new JavaScriptSerializer().Deserialize<Person>(s2);

    在javascript中常用Json2.js中的方法:

      var person = new Object();
       person.Id = "112233";
       person.Name = "Benjamin";
     var personStr = JSON.stringify(person); //序列化
     var person = JSON.parse(personStr);//反序列化

    以及一个jQuery中不常用的:

    $("form").serialize() //将一个表单内有name属性且选中的元素序列化为形如single=Single2&multiple=Multiple&check=check2 的字符串
  • 相关阅读:
    VIM配置
    guanyuzhuguosha
    会议室同步时钟布置
    npm ERR! missing script: dev npm ERR! A complete log of this run can be found in: npm ERR!
    Xmind2021安装激活破解
    SpringCloudAlibaba 中文文档
    flex布局 滚动条失效
    Luogu P3397 地毯
    Luogu P4343 自动刷题机
    Luogu P1902 刺杀大使
  • 原文地址:https://www.cnblogs.com/Benjamin/p/3414782.html
Copyright © 2011-2022 走看看