PHP-PHP5.2版本以下如何实现json_encode和json_decode方法

PHP-PHP5.2版本以下如何实现json_encode和json_decode方法

虐人心 发布于 2017-07-06 字数 70 浏览 1113 回复 3

php低版本需要使用到json格式,如何简单实现这两个函数的替代方法。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-10-13 3 楼

自用的函数,在使用前需要先判断PHP是否已定义json_encode和json_decode这两个方法,因此需要在外面再包装一层,包装的方法这里就不说了。

if (!function_exists('json_encode'))
{
function format_json_value(&$value)
{
if(is_bool($value))
{
$value = $value?'true':'false';
}else if(is_int($value))
{
$value = intval($value);
}else if(is_float($value))
{
$value = floatval($value);
}else if(defined($value) && $value === null)
{
$value = strval(constant($value));
}else if(is_string($value))
{
$value = '"'.addslashes($value).'"';
}
return $value;
}

function json_encode($data)
{
if(is_object($data))
{
//对象转换成数组
$data = get_object_vars($data);
}else if(!is_array($data))
{
// 普通格式直接输出
return format_json_value($data);
}
// 判断是否关联数组
if(empty($data) || is_numeric(implode('',array_keys($data))))
{
$assoc = false;
}
else
{
$assoc = true;
}
// 组装 Json字符串
$json = $assoc ? '{' : '[' ;
foreach($data as $key=>$val)
{
if(!is_null($val))
{
if($assoc)
{
$json .= ""$key":".json_encode($val).",";
}
else
{
$json .= json_encode($val).",";
}
}
}
if(strlen($json)>1)
{// 加上判断 防止空数组
$json = substr($json,0,-1);
}
$json .= $assoc ? '}' : ']' ;
return $json;
}
}

晚风撩人 2017-08-15 2 楼

推荐直接使用Zend_Json类

想挽留 2017-07-22 1 楼

有现成的就不要再造轮子了。

1、到这里直接下载JSON类库(http://pear.php.net/package/Services_JSON/download)
2、解压找到JSON.php,并放到你的项目下
3、以下就是封装用它封装了json_encode和json_decode()

if(!function_exists('json_encode'))
{
include('JSON.php');
function json_encode($val)
{
$json = new Services_JSON();
return $json->encode($val);
}

function json_decode($val)
{
$json = new Services_JSON();
return $json->decode($val);
}
}