PHP5.2.0之前版本使用JSON函数的方法

PHP5.2.0之前版本使用JSON函数的方法
我们知道PHP在其版本5.2.0之后才支持 JSON相关函数,在此版本之前如果我们要使用JSON函数则需要自己实现
JSON的算法已经有人实现了,其下载地址为:http://pear.php.net/pepr/pepr-proposal-show.php?id=198

但是它是一个类这与我们的使用习惯不同,于是我们需要将它包装下,其代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* 对象转换成数组 递归函数
* @param <type> $value 需要转换的值                                
* @return <type>
*/
function object2array($value) {
   if (!(is_array($value) || is_object($value))) {
       return $value;
   }
 
   $array = array();
   foreach ($value as $key => $row) {
       $array[$key] = object2array($row);
   }
 
   return $array;
}
 
/**
* 替换JSON方法
*/
if (!function_exists("json_encode")) {
   include_once("JSON.php");
 
   function json_encode($array) {
       $json = new Services_JSON();
       $json_array = $json->encode($array);
       return $json_array;
   }
 
   /**
    * 解析JSON数据
    * @param string $json_data 需要解析的JSON数据                                                      
    * @param bool $toarray 是否需要解析成数组                                      
    * @return array 返回解析后的数组
    */
   function json_decode($json_data, $toarray = TRUE) {
       $json = new Services_JSON();
       $array = $json->decode($json_data);
 
       if ($toarray) { //  需要转换成数组
           $array = object2array($array);
       }
       return $array;
   }
 
}

不过以上的递归实现在效率上有一些慢,它需要遍历这个数组的所有元素,
如果只限于实现二维数组,可以考虑直接使用循环+类型强制转化来做
【EOF】

PHP5.2.0之前版本使用JSON函数的方法》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>