广告位
PHP 反序列化转 JSON
将 PHP unserialize 序列化字符串转换为格式化 JSON,自实现递归下降解析器,支持类型高亮与错误位置定位
反序列化转换器
输入 PHP serialize 字符串,输出格式化 JSON(单向:PHP → JSON)
保留 PHP 对象的 __class 属性
支持类型:s 字符串、i 整数、d 浮点、b 布尔、N null、a 数组、O 对象
转换结果将显示在此处...
支持类型与示例
s:5:"hello";字符串 "hello"
i:42;整数 42
d:3.14;浮点 3.14
b:1;布尔 true
N;null
a:2:{i:0;s:1:"a";i:1;s:1:"b";}数组 ["a","b"]
O:3:"Foo":1:{s:1:"x";i:1;}对象 Foo{x:1}
广告位
使用说明
- 在左侧输入 PHP serialize 字符串(如
a:2:{i:0;s:5:"apple";i:1;s:6:"banana";}) - 选择缩进空格数(2/4/Tab),控制输出 JSON 的缩进样式
- 勾选"保留 __class 属性"以保留 PHP 对象的类名信息
- 点击"反序列化为 JSON"按钮,右侧显示格式化 JSON
- 点击"关闭高亮"切换纯文本输出,便于复制到其他编辑器
- 解析失败时会在右下方显示错误位置(第 N 个字符附近)与原因
- 支持嵌套数组、对象及复杂混合结构
适用场景
- 阅读 PHP 缓存文件(如 Laravel 缓存)中的序列化数据
- 调试 unserialize 失败原因,定位格式错误位置
- 分析 PHP session 文件、序列化日志数据
- 排查 PHP 对象的类名与属性结构
- 研究 PHP serialize 格式与 JSON 的类型差异
安全保障
- 本地解析:所有反序列化在浏览器本地完成
- 纯解析:不调用 eval、不实例化对象,无反序列化漏洞风险
- 深度限制:嵌套层级超过 64 自动报错,防止栈溢出
- 只读处理:不修改、不上传任何输入数据
常见问题
为什么不用 JSON.parse 解析?
PHP serialize 与 JSON 是两种完全不同的格式。PHP 使用 s/i/d/b/N/a/O 类型前缀加长度/值的形式,与 JSON 的 {} [] 结构不同。本工具自实现递归下降解析器逐字符解析,不依赖任何第三方库。
解析失败时如何定位错误?
解析器记录每个字符的偏移量,出错时抛出包含 pos 字段的错误对象,UI 会在右下方以红色提示显示"第 N 个字符附近 - 错误原因"(如"期望字符 ; 实际为 x"),可据此快速定位到输入串中的具体位置。
"保留 __class 属性"有什么作用?
PHP 对象在 JSON 中无直接对应结构,本工具将 O:LEN:"类名":N:{...} 转换为带 __class 字段的 JSON 对象。开启该选项后类名以 "__class":"类名" 形式保留在结果首位,关闭则只输出属性不保留类名信息。
类型高亮如何配色?
键名(蓝色加粗)、字符串(绿色)、数字(橙色)、布尔(紫色加粗)、null(灰色斜体)、对象类名(粉色背景标签)按 JSON 通用配色规范显示,便于区分不同数据类型。点击"关闭高亮"可输出纯文本 JSON。
广告位