我尝试用PHP序列化我的数据。不幸的是,serialize()函数返回一个错误的值。
要序列化的字符串:
{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}
我的服务器上返回的是serialize():
serialize($code);
s:204:"{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}";
应该返回什么( https://duzun.me/playground/serialize):
a:1:{s:32:"2c4cfd9a340dd0dc88b5712c680c1f88";a:4:{s:4:"type";s:14:"product_custom";s:6:"layout";s:7:"default";s:4:"size";s:12:"medium_large";s:10:"attributes";a:1:{s:32:"62d7d5184b7a313dc64255bdb8187847";a:3:{s:4:"type";s:5:"image";s:5:"color";s:7:"#FFFFFF";s:5:"image";s:5:"36018";}}}}
答案 0 :(得分:1)
首先需要先json_decode才能得到想要的结果:
当你在json_decode中使用布尔开关作为第二个参数时,它将是一个数组而不是一个对象。
$serialized = serialize(json_decode($inputString, true));
echo $serialized;
// output:
// a:1:{s:32:"2c4cfd9a340dd0dc88b5712c680c1f88";a:4:{s:4:"type";s:14:"product_custom";s:6:"layout";s:7:"default";s:4:"size";s:12:"medium_large";s:10:"attributes";a:1:{s:32:"62d7d5184b7a313dc64255bdb8187847";a:3:{s:4:"type";s:5:"image";s:5:"color";s:7:"#FFFFFF";s:5:"image";s:5:"36018";}}}}
答案 1 :(得分:0)
您正在使用的网站并不清楚它正在做什么,但它似乎将字符串视为JSON并在将其序列化为PHP之前解码为数组。如果要复制此内容,可以使用:
$str = '{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}';
echo serialize(json_decode($str, true));
一个:1:{S:32: “2c4cfd9a340dd0dc88b5712c680c1f88”;一个:4:{S:4: “类型”; S:14: “product_custom”; S:6: “布局”; S:7:”默认 “; S:4:” 大小 “; S:12:” medium_large “; S:10:” 属性 “;一个:1:{S:32:” 62d7d5184b7a313dc64255bdb8187847 “;一个:3:{S:4:”类型 “; S:5:” 图像 “; S:5:” 颜色 “; S:7:” #FFFFFF “; S:5:” 图像 “; S:5:” 36018" ;}}}}
正如评论中所指出的,除非有特定的原因需要序列化PHP,否则只需坚持使用已有的序列化JSON字符串 - 它将更具可读性和便携性。