这个工具是什么
PHP 序列化转换工具用来读懂数据库里、缓存里、session 里存的那串 a:2:{s:4:"name";s:6:"张三";...}:左边贴序列化文本,右边给出结构化的 JSON,字段名与类型一目了然。反过来也可以把 JSON 转成序列化文本,用来造测试数据。
整个解析在浏览器里完成,输入内容不会上传。
什么时候用它
- 从数据库的某个字段里看到一串
a:开头的文本,想知道它到底是什么结构。 - 排查 session 或缓存数据:确认某个键存的是字符串还是数组,整数有没有被存成字符串。
- 造测试数据:把设计好的 JSON 转成序列化文本,直接写进 fixture 或 SQL 里。
- 核对字符串长度:手写
s:后面的字节数经常算错,工具给出的结果是准确的。 - 确认对象序列化后保留了什么类名与属性。
有什么限制
- 不还原引用关系:含
R:、r:的内容会直接报错,因为还原它们需要维护对象身份图。 - 不支持实现了
Serializable接口的类:那类内容的C:格式与普通对象不同。 - 对象转成 JSON 时类名会放在
__php_class字段里,转回去时按这个字段还原成对象。如果你的数据本来就有一个同名字段,会互相干扰。 - 数字键与字符串键的区分按 PHP 的规则处理:
'0'会被当成整数键 0。 - 解析只把输入当数据读,不执行其中任何内容,但仍建议不要粘贴来源不明的敏感数据。
常见问题
Q:为什么这里的字符串长度要按字节算?
A:PHP 的 s: 后面跟的是字节数而不是字符数,一个中文字符占 3 个字节。这也是手写序列化文本最容易出错的地方,工具按字节精确处理。
Q:解析报错说「含引用」是什么意思?
A:这段内容里有两个元素指向同一个对象(PHP 用 R: 或 r: 标记)。还原这种共享关系需要跟踪每个位置的引用编号,本工具不做这个还原。
Q:转出来的 JSON 里 __php_class 是什么?
A:PHP 对象序列化时会记录类名。为了不丢信息,解析结果把它放在 __php_class 字段里;把这段 JSON 转回序列化文本时会重新还原成对象。
Q:能处理很大的内容吗? A:受浏览器可用内存限制,通常几十 MB 以内没问题。嵌套超过 64 层会被拒绝,避免构造出的输入把页面拖死。