欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

json - PHP数组序列化后,数据无法反序列化问题,急

程序员文章站 2022-04-21 16:32:06
...
我将一个数组序列化放到了MySQL里面,然后用PHP获取后,用JSON格式发送出去,接口接受此数据的时候,再将JSON转化为了数组,最后发现这个数组product_list键所对对应的序列化数组不能被反序列化,这是为什么呢?
  1. A数组中的 product_list是数组
  2. 将product_list序列化入库
  3. PHP 查询数据库出来,将整个大数组转换为JSON 发送给接口调用方
    4.请求的接口放将JSON转换为数组,成功转换为数组后,发现数组的 product_list键,所对应
    的反序列化数据转换为数组失败

回复内容:

我将一个数组序列化放到了MySQL里面,然后用PHP获取后,用JSON格式发送出去,接口接受此数据的时候,再将JSON转化为了数组,最后发现这个数组product_list键所对对应的序列化数组不能被反序列化,这是为什么呢?

  1. A数组中的 product_list是数组
  2. 将product_list序列化入库
  3. PHP 查询数据库出来,将整个大数组转换为JSON 发送给接口调用方
    4.请求的接口放将JSON转换为数组,成功转换为数组后,发现数组的 product_list键,所对应
    的反序列化数据转换为数组失败

可能是因为中文编码的缘故。php 反序列化的时候依赖字节长度。
不要用 php 序列化存进去了, 转成 json ,这样通用性也好很多。谁能保证,这些数据是一直被 php 读取呢?

我曾经遇到过这么个情况,同一个字符串,我在本地序列化的结果,跟在远程服务器上序列号的结果不一样。因为对我的系统不影响,所以我没有深究。但是我知道有这种现象会发生:

或许是因为php版本的问题,或许是因为php扩展的问题,更或许是因为编码等等某些原因,在不同的服务器环境中,PHP序列化的结果是不稳定不可靠的