PHP 序列化

PHP serialize/unserialize 序列化与反序列化工具,JSON 与 PHP serialize 字符串双向互转,支持全类型与键顺序保留

序列化转换器

PHP serialize 格式与 JSON 之间的双向转换

保留键顺序
显示类型标注(反序列化时)
支持 JSON 对象/数组,键为字符串,值可为任意 JSON 类型

PHP serialize 类型对照

s:LEN:"STR";
string 字符串
i:NUM;
integer 整数
d:NUM;
double 浮点
b:0/1;
boolean 布尔
N;
null 空值
a:N:{...}
array 数组
O:LEN:"CLS":N:{...}
object 对象
广告位

使用说明

  1. 选择转换方向:JSON 转 PHP 序列化(默认)或 PHP 序列化转 JSON
  2. 勾选"保留键顺序"以保留 PHP 数组中的键出现顺序(默认开启)
  3. 勾选"显示类型标注"在反序列化结果中标记每个字段的 PHP 类型
  4. 在左侧输入 JSON 数据或 PHP serialize 字符串
  5. 点击"序列化"按钮,右侧自动显示转换结果
  6. "交换方向"按钮可一键切换两个文本框的方向与内容
  7. 解析失败时会在右下方显示具体错误位置与原因

适用场景

  • 调试 PHP serialize 字符串内容,转为可读 JSON
  • 构造缓存数据:将 JSON 数据序列化为 PHP 缓存格式
  • 跨语言数据交换:PHP 与其他语言之间的数据传递
  • 研究 PHP 序列化格式细节与类型差异
  • 排查 unserialize 失败原因,定位格式错误位置

安全保障

  • 本地解析:所有转换在浏览器本地完成
  • 纯实现:自实现递归下降解析器,不依赖第三方库
  • 深度限制:防止恶意构造的深层嵌套数据导致栈溢出
  • 只读处理:不修改、不上传任何输入数据

常见问题

PHP serialize 字符串中的长度是字节数还是字符数?

字节数。PHP serialize 中 s:LEN:"..." 的 LEN 表示字符串的 UTF-8 字节长度,而非字符数。本工具在序列化时按 UTF-8 字节计算长度,反序列化时按字节读取,以保持与 PHP 一致的行为。

JSON 数组与对象在序列化时如何区分?

JSON 数组([...])转为 PHP 数组 a:N:{i:0;...},键为 0 开始的整数;JSON 对象({...})转为 PHP 关联数组 a:N:{s:K:"...";...},键为字符串。PHP 中两种结构都由 array 类型表示。

"保留键顺序"选项有什么用?

JSON 标准未规定对象键的顺序,但实际应用中(如 Laravel 配置、缓存数据)键顺序可能携带语义。开启该选项后,反序列化时按 PHP serialize 中键的出现顺序输出 JSON,便于人工阅读与对照。

"显示类型标注"如何工作?

仅在 PHP 序列化转 JSON 方向生效。开启后,输出的 JSON 中每个值后会附加一个 __type 注解,标明其原始 PHP 类型(string/integer/double/boolean/null/array/object),便于排查 PHP 与 JSON 类型映射差异。