Archive for 一月, 2012

php使用json代替serialize的想法

星期五, 一月 27th, 2012

我需要把一些内容存放在数据库,感觉这些没必要建立字段,于是索性放在数组中序列化后存入数据库.
使用serialize序列化后的字符串很多内容都是不需要的,比如长度信息,数据类型.
感觉平时用的json不错.
打算用json代替,
网上好多结果都是json语serialize的速度比较,这个倒没很大的必要.
需要注意的是 json_decode时返回的是object,需要

json_decode("字符串",ture);

后来发现也不是那么完美..
json_encode会对中文进行编码.如果含有大量的中文,那长度超过了serialize.
这让人很蛋疼,网上给出的办法是对内容进行urlencode,json_enocde后再urldecode

function jsonencode($code){ //新json_encode
 $code = json_encode(urlencodearray($code));//对数组处理
 return urldecode($code);
}
function urlencodearray($data){//urlencode数组
 if(is_array($data)){
 foreach($data as $key=>$val){
 $data[$key] = urlencodearray($val);
 }
 return $data;
 }else{
 return urlencode($data);
 }
}

真是菊花一紧啊….
再这之后还可以进行一次压缩.
当然,如果不考虑内容的可读性,用其他的扩展也不错,比如msgpack,