PHP序列化格式咨询:如何将其解码为纯JSON?
PHP序列化数据识别与JSON转换方案
你遇到的是PHP序列化格式(PHP Serialized Data),这是PHP语言用来将数组、对象等变量转换为可存储/传输字符串的格式,其中的标识含义如下:
a:N:{...}:代表包含N个元素的数组(array)s:N:"xxx":代表长度为N的字符串(string),xxx是字符串内容i:N:代表整数(integer),N是对应数值
转换为JSON的方法
1. PHP环境下处理
直接使用PHP内置函数完成解码与转换:
// 替换为完整的序列化数据 $serializedStr = 'a:24:{s:12:"webhook_data";a:41:{s:2:"id";i:4582988775555;s:8:"order_id";...}}'; // 反序列化为PHP变量 $phpVar = unserialize($serializedStr); // 转换为格式化的JSON字符串 $jsonStr = json_encode($phpVar, JSON_PRETTY_PRINT); echo $jsonStr;
注意:必须保证序列化数据完整且格式正确(比如字符串长度与实际内容长度一致),否则
unserialize()会返回false。
2. 非PHP环境(以Python为例)
借助第三方库phpserialize实现转换:
- 先安装依赖:
pip install phpserialize
- 编写转换脚本:
import phpserialize import json # 传入字节类型数据,替换为完整的序列化内容 serialized_bytes = b'a:24:{s:12:"webhook_data";a:41:{s:2:"id";i:4582988775555;s:8:"order_id";...}}' # 反序列化为Python字典/列表 php_data = phpserialize.loads(serialized_bytes) # 转换为JSON字符串 json_str = json.dumps(php_data, indent=2, ensure_ascii=False) print(json_str)
内容的提问来源于stack exchange,提问作者Toma Tomov
相关产品推荐
相关产品推荐

