What is data serialization ?

后端 未结 5 1639
后悔当初
后悔当初 2021-01-31 02:33

First of all, I could not able to get clear definition of it from WikiPedia or even from serialize function in the PHP manual. I need to know some cases we need the term seriali

5条回答
  •  醉话见心
    2021-01-31 02:55

    What is serialization?

    Serialization encodes objects into another language.
    For example you have an array in PHP like this:

    $array = array("a" => 1, "b" => 2, "c" => array("a" => 1, "b" => 2));
    

    And then you want to store it in file or send to other application.

    There are several language choices, but the idea is the same: The array has to be encoded (or translated), into text or bytes, that can be written to a file or sent via the network.
    For example, in PHP, if you:

    $data = serialize($array);
    

    you will get this:

    a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";a:2:{s:1:"a";i:1;s:1:"b";i:2;}}
    

    This is PHP's particular serializing format that PHP understands, and it works vice versa, so you are able to use it to deserialize objects.
    For example, you stored a serialized array in a file, and you want it back in your code as an array:

    $array = unserialize($data);
    

    But you could choose a different serialization format, for example, JSON:

    $json = json_encode($array);
    

    will give you this:

    {"a":1,"b":2,"c":{"a":1,"b":2}}
    

    The result is not only easily saved, read by human eye, or sent via network, but is also understandable to almost every other language (JavaScript, Java, C#, C++, ...)

    Conclusion
    Serialization translations objects to another language, in case you want to store or share data.

    Are there any situations, where you cannot do anything, but serialize it?

    No. But serialization usually makes things easier.

    Are JSON and PHP format the only possible formats?
    No, no, no and one more time no. There are plenty of formats.

    • XML which has successors like SOAP, WSDL, etc (those have particular purpose)
    • Bytes
    • ...
    • ...
    • ...
    • Your own formats (you can create your own format for serialization and use it, but that is a big thing to do and is not worth it, most of the time)

提交回复
热议问题