广告位
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 对象
广告位
使用说明
- 选择转换方向:JSON 转 PHP 序列化(默认)或 PHP 序列化转 JSON
- 勾选"保留键顺序"以保留 PHP 数组中的键出现顺序(默认开启)
- 勾选"显示类型标注"在反序列化结果中标记每个字段的 PHP 类型
- 在左侧输入 JSON 数据或 PHP serialize 字符串
- 点击"序列化"按钮,右侧自动显示转换结果
- "交换方向"按钮可一键切换两个文本框的方向与内容
- 解析失败时会在右下方显示具体错误位置与原因
适用场景
- 调试 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 类型映射差异。
广告位