php自定义json_encode()和json_decode()函数

json数据大家应该遇到过,json_encode()和json_decode()是php5.0以后加上的内置函数,如果低版本要使用,需加扩展,很多时候我们无权改变服务器的配置,我们只能通过自定义函数来实现这两个函数,其实所有的系统内置函数,基本上我们都是可以自己来定义的。

if (!function_exists(‘json_encode‘)) {
function json_encode($array = array()) {
if(!is_array($array)) return null;
$json = "";
$i = 1;
$comma = ",";
$count = count($array);
foreach($array as $k=>$v){
if($i==$count) $comma = "";
if(!is_array($v)){
$v = addslashes($v);
$json .= ‘"‘.$k.‘":"‘.$v.‘"‘.$comma;
}
else{
$json .= ‘"‘.$k.‘":‘.json_encode($v).$comma;
}
$i++;
}
$json = ‘{‘.$json.‘}‘;
return $json;
}
}
if (!function_exists(‘json_decode‘)) {
function json_decode($json, $assoc = true) {
$comment = false;
$out     = ‘$x=‘;
$json = preg_replace(‘/:([^"}]+?)([,|}])/i‘, ‘:"\1″\2′, $json);
for ($i=0; $i<strlen($json); $i++) {
if (!$comment) {
if (($json[$i] == ‘{‘) || ($json[$i] == ‘[‘)) {
$out .= ‘array(‘;
}
elseif (($json[$i] == ‘}‘) || ($json[$i] == ‘]‘)) {
$out .= ‘)‘;
}
elseif ($json[$i] == ‘:‘) {
$out .= ‘=>‘;
}
elseif ($json[$i] == ‘,‘) {
$out .= ‘,‘;
}
elseif ($json[$i] == ‘"‘) {
$out .= ‘"‘;
}
}
else $out .= $json[$i] == ‘$‘ ? ‘\$‘ : $json[$i];
if ($json[$i] == ‘"‘ && $json[($i-1)] != ‘\\‘)  $comment = !$comment;
}
eval($out. ‘;‘);
return $x;
}
}
时间: 2024-12-13 06:54:02

php自定义json_encode()和json_decode()函数的相关文章

php中的json_encode()和json_decode()函数的一些说明

1,php定义对象字面量时,不支持直接书写,如{“a":"11","b":"22"}.这种书写方式在其他语言中被支持,在php中需要按如下方式定义: ① $a = '{“a":"11","b":"22"}'[这是json字符串,不加外面的引号则是json对象] ② $b = json_decode($a); 这样$b就是对象字面量了. 2,关于json_encode(

HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法

这两个函数比较简单,我这里直接写例子,但是有一点一定要注意,json数据只支持utf-8格式,GBK格式的数据转换为json会报错! json_encode()用法: <?php$data =array(‘name’=>’jianqingwang’,‘sex’=>’man’,‘title’=>’PHPER’,‘location’=>’XiaMen’); $new_data =json_encode($data); var_dump($data);echo “<br>

PHP数组和Json之间的互相转换 json_encode() 和 json_decode()

之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互.因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象.Json很好的解决了这个问题. Json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript的一个子集,这意味着JavaScript可以直接读取Json,非常方便. Json的具体形式是: 1.对象 对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}

PHP json_decode 函数解析 json 结果为 NULL 的解决方法

在做网站 CMS 模块时,对于模块内容 content 字段,保存的是 json 格式的字符串,所以在后台进行模块内容的编辑操作 ( 取出保存的数据 ) 时,需要用到 json_decode() 函数. 但是在解析的时候,使用 json_decode() 函数解析的结果一直是 NULL,没有出现希望解析成的数组.下面是问题和分析: 1. 当输出 json 字符串时,代码和页面的显示内容分别是: echo $content = $res[0]['con']['content']; 只需要考虑 $c

自定义文件夹处理函数(Python)

#encoding: utf-8 #author: walker #date: 2017-06-15 #summary: 自定义文件夹处理函数,适用于python3.5+ import os import shutil import win32com.client #清空目录 def ClearDir(dir):     print('ClearDir ' + dir + '...')           for entry in os.scandir(dir):         if entr

如何在VS2013+QT5.3环境下使用自定义信号与槽函数

图1中标注出来的是VS2013中的QT界面设计师文件,双击默认打开的是Qt设计师工具. 在界面上面拉入一个PushButton,点击编辑信号与槽按钮进入编辑模式. 选择信号clicked(),发现可以从QWidget继承很多槽函数,暂时先选择close()槽函数,点OK 保存后,VS2013中有个文件“ui_testqt.h”会自动生成信号与槽的代码.此文件也是生成界面文件的源代码. 目前都是使用的默认的信号与槽函数,如果想触发自定义的槽函数呢?我们会想到可以直接修改ui_testqt.h里面的

自定义防SQL注入函数

/************************************************ *SQL防注入函数 *@time 2014年6月24日18:50:59 * */ public function safe_replace($string){ $string = str_replace('%20','',$string); $string = str_replace('%27','',$string); $string = str_replace('%2527','',$stri

php json_decode 函数

json_decode 函数 url地址:http://php.net/manual/en/function.json-decode.php json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json 待解码

问题处理:php json_decode函数处理的字符串中含有反斜杠“\”时,处理出错,返回的结果为NULL

php json_decode函数处理的字符串中含有反斜杠“\”时,处理出错,返回的结果为NULL. 处理方法,将字符串中的反斜杠1个替换成2个: /** * 一个反斜杠要替换成4个,否则json_decode不能解析 */ $json_str = str_replace('\\','\\\\',$json_str); $json = json_decode($json_str,true);