什么是序列化?
序列化将对象编码为另一种格式。
例如,您在PHP中有一个数组,如下所示:
$array = array("a" => 1, "b" => 2, "c" => array("a" => 1, "b" => 2));
然后你想把它存储在文件中或发送到其他应用程序。
有几种格式选择,但想法是相同的:数组必须编码(或者你可以说“翻译”),成文本或字节,可以写入文件或通过网络发送。
例如,在 PHP 中,如果您:
$data = serialize($array);
你会得到这个:
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;}}
这是 PHP 可以理解的 PHP 的特定序列化格式,反之亦然,因此您可以使用它来反序列化对象。
例如,您将序列化数组存储在文件中,并希望它在代码中作为数组返回:
$array = unserialize($data);
但您可以选择不同的序列化格式,例如 JSON:
$json = json_encode($array);
会给你这个:
{"a":1,"b":2,"c":{"a":1,"b":2}}
结果不仅易于保存,人眼读取或通过网络发送,而且几乎可以被所有其他语言(JavaScript,Java,C#,C++,...
结论
序列化将对象转换为另一种格式,以防您想要存储或共享数据。
是否有任何情况,你不能做任何事情,但序列化它?
不。但序列化通常使事情变得更容易。
JSON和PHP格式是唯一可能的格式吗?
不,不,不,再一次不。有很多格式。
- XML(例如,使用像 WSDL 或 XHTML 这样的模式)
- 字节、原始音符等
- 亚姆尔
- ...
- ...
- 您自己的格式(您可以创建自己的序列化格式并使用它,但这是一件大事,大多数时候都不值得)
序列化是将某些内存中对象转换为另一种格式的过程,该格式可用于存储在文件中或通过网络发送。反序列化是相反的过程,这意味着实际的对象实例是从给定的序列化表示形式中恢复的。这在各种系统之间进行通信时非常有用。
序列化格式可以是可互操作的,也可以是不可互操作的。可互操作的格式(如 JSON、XML 等)允许使用给定平台序列化某些对象,并使用其他平台对其进行反序列化。例如,对于JSON,您可以使用javascript序列化对象,并通过网络将其发送到PHP脚本,该脚本将反序列化该对象并使用它。
serialize()
PHP 函数使用不可互操作的格式。这意味着只有 PHP 可用于序列化和反序列化对象。
您可以使用json_encode
和json_decode()
函数,以便使用 JSON 可互操作格式序列化/反序列化 PHP 对象。
-
-
-
java string.getBytes(“UTF-8”) javascript equivalent 我在java中有这个字符串: 我的印象是 unescape(encodeURIComponent()) 会正确地将字符串转换为 UTF-8。难道不是这样吗? 参考:
-
在 REST API 调用之前对 meta 进行 OPTIONS 调用 我试图理解这个系统是如何在引擎盖下工作的。该系统是基于非常标准的,我没有得到的客户端在每次API调用之前进行调用,并且XML内容以该格式返回。它使用泽西爪哇。 B.此调用是由浏览器自
-
使用 Java 进行 AES 加密,并使用 Javascript 进行解密 我正在制作一个应用程序,它需要基于Java的AES加密和基于JavaScript的解密。我使用以下代码进行加密作为基本形式。