JSON对象 至 已序列化的PHP对象 转换器
使用我们多功能的 PHP 序列化与反序列化工具,轻松在 PHP 中序列化和反序列化数据。这款在线工具非常适合希望将复杂数据结构转换为可存储字符串并还原为原始形式的开发者。无需安装软件,即可确保数据处理准确高效。使用这款易用可靠的工具,提升你的 PHP 开发工作流程。
常见问题
要在 PHP 中序列化数据,请将数据结构(数组、对象或标量值)输入提供的字段,然后点击“序列化”按钮。该工具使用 PHP 的序列化协议将复杂数据结构转换为可存储的字符串格式,生成可保存到文件、数据库或通过网络传输的表示形式。
要在 PHP 中反序列化数据,请将序列化字符串(通常以 a:、s: 或 O: 等格式标记开头)输入提供的字段,然后点击“反序列化”按钮。该工具会将字符串转换回原始数据结构,准确还原序列化前的数组、对象和值。
序列化会将复杂数据结构转换为可存储的字符串,可用于将数据持久化存储在文件或数据库中、通过网络传输数据、存储会话数据、实现缓存机制、构建消息队列负载,以及在请求之间保留对象状态。反序列化则可取回原始数据,以便继续使用。
PHP 会序列化字符串、整数、浮点数、布尔值、数组、对象和 NULL 值。它会保留数组键、对象属性(公共、受保护、私有)、嵌套结构和数据类型。不过,资源(如数据库连接或文件句柄)无法序列化,需要特殊处理。
是的,反序列化不可信数据时可能发生 PHP 对象注入攻击。攻击者可以构造恶意序列化字符串,通过魔术方法(__wakeup、__destruct)触发代码执行。切勿在未验证用户输入或外部数据的情况下调用 unserialize。对于不可信数据,请使用 JSON,或实现 allowed_classes 限制。
是的,PHP 会序列化自定义对象,并保留所有属性及其值。不过,反序列化前必须加载类定义,才能正确重建对象。可使用自动加载、引入类文件,或实现 __sleep() 和 __wakeup() 魔术方法来实现自定义序列化行为。
PHP serialize() 会保留精确的数据类型、私有/受保护属性和对象类信息,但只能在 PHP 中使用。JSON 与语言无关、易读、适用于网络,并可跨语言使用,但会丢失私有属性,也无法保留精确的 PHP 类型。仅在 PHP 中存储时使用 serialize();用于 API 和互操作时使用 JSON。
PHP 会自动序列化会话数据($_SESSION),以便在请求之间存储。将数组或对象存入会话时,PHP 会将其序列化并存入文件或数据库,然后在后续页面加载时反序列化。这样便可在访问不同页面期间保留用户状态、购物车和身份验证信息。
可以将序列化数据存储在数据库的 TEXT 或 BLOB 列中。不过,序列化数据不利于高效查询、索引和搜索。如果要将完整对象作为单个单元存储,可以使用序列化;如果需要查询单个字段或维护数据关系,则建议使用 JSON 或规范化表。
序列化数据使用格式前缀:s:5:"hello"(字符串)、i:42(整数)、a:2:{...}(数组)、O:4:"User"(对象)。数字表示长度或数量。这种格式紧凑,但不便于人类阅读。使用我们的工具,可在易读的 JSON 与 PHP 序列化格式之间转换,方便调试和处理数据。
反序列化数据以检查其结构,对反序列化值使用 print_r() 或 var_dump(),转换为 JSON 以提高可读性,检查序列化是否不完整或损坏,验证对象类的可用性,以及使用我们的工具可视化和理解复杂的序列化结构。
标准的 PHP 序列化不支持闭包。请使用 Opis Closure 或 Laravel 的 SerializableClosure 等包来实现此功能。如果对象中的常规函数和方法是在类中定义的,它们就可以被序列化,但匿名函数需要特殊处理。
__sleep() 在序列化前运行,并返回要序列化的属性数组(可用于排除特定数据)。__wakeup() 在反序列化后运行,用于初始化。__serialize() 和 __unserialize()(PHP 7.4+)提供了更多控制。可在类中实现这些方法以自定义序列化行为。
反序列化现有的 PHP 数据,将其转换为数组/ stdClass 对象,然后进行 JSON 编码。更新代码,使用 json_encode()/json_decode() 替代 serialize()/unserialize()。JSON 更安全、易读且兼容性更好,但会失去序列化所保留的私有属性和精确类型信息。