php5.2以下版本无json_decode函数的解决方法
今天写代码的时候,需要用到json_decode函数,发现php5.2以前的版本没有集成这个函数,不过我们可以通过自定义函数实现。
function json_decode2($json)
{
$comment = false;
$out = '$x=';
for ($i=0; $i<strlen($json); $i++)
{
if (!$comment)
{
if (($json[$i] == '{') || ($json[$i] == '[')) $out .= ' array(';
else if (($json[$i] == '}') || ($json[$i] == ']')) $out .= ')';
else if ($json[$i] == ':') $out .= '=>';
else $out .= $json[$i];
}
else $out .= $json[$i];
if ($json[$i] == '"' && $json[($i-1)]!="\\") $comment = !$comment;
}
eval($out . ';');
return $x;
}
不过这个返回的是Array
要返回object 则要用到 service_json类了
相关推荐
-
php json_encode与json_decode详解及实例
一.json_encode() 该函数主要用来将数组和对象,转换为json格式.先看一个数组转换的例子: $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); 结果为 {"a":1,"b":2,"c":3,"d":4,"e":5} 再看一个对象转换的例子: $obj->body
-
关于php中的json_encode()和json_decode()函数的一些说明
一,json语法( php中的json_decode($json)中的$json要符合json语法格式 ) ① JSON可以表示三种类型的值 1,简单值.包括整型,字符串型,布尔值和null.例如:5,"hello world",true,null都是有效的JSON数据.其中JSON字符串必须使用双引号(单引号会导致语法错误). 2,对象.如,{"name":"tony","age":15}.说明①要求属性必须用双引号(不加或
-
php中json_decode()和json_encode()的使用方法
1.json_decode() 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 待解码的 json string 格式的字符串. assoc 当该参数为 TRUE 时,将返回 array 而非 o
-
使用PHP json_decode可能遇到的坑与解决方法
前言 最近在做网站 的时候用到了json_decode函数,发现了一个问题,现在总结分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧. 场景: 某项目客户反馈,输出的结果 JSON 中有个要求为对象的数据字段,在某些情况下返回的是 [] 而不是 {}:数据由公司其他部门提供,查看原始数据的时候,没有发现任何问题:后来因为要加入某些预处理,在获取到其他部门的 JSON 数据之后进行解码并对某个字段进行处理:然而,在处理完之后再次使用 JSON 输出,发现结果已经不是我们想要的了. 原始数
-
PHP中遇到BOM、<feff>编码导致json_decode函数无法解析问题
昨天同事遇到一个奇怪的问题,就是以下代码,无法通过JSON校验,也无法通过PHP的json_decode函数解析. 复制代码 代码如下: [ { "title": "", "pinyin": "" } ] 可能聪明的你已经猜到其中包含有不看见的特殊字符,在vim下查看: 复制代码 代码如下: [ { <feff>"title&quo
-
浅析php中json_encode()和json_decode()
json_encode() 该函数主要用来将数组和对象,转换为json格式. 复制代码 代码如下: $arr = array ('a'=>'a','b'=>'b','c'='c','d'=>'d','e'='e');echo json_encode($arr); 输出结果: json只接受utf-8编码的字符,json_encode()的参数必须是utf-8编码. 复制代码 代码如下: class person{ public $name; public $age; p
-
Javascript生成json的函数代码(可以用php的json_decode解码)
但是有个问题 虽然JS解码JSON非常方便,但是编码似乎没有什么好办法- 本着能懒即懒,不能懒也尽量懒的原则,古狗了一下 还真让我发现了 PHP里直接用json_decode就可以解码,用起来相当方便 复制代码 代码如下: function json_encode_js(aaa){ function je(str){ var a=[],i=0; var pcs="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-
PHP json_decode函数详细解析
一.函数简介1.此函数有四个参数,一般在使用时会用到前两个,具体的参数可以看手册. 2.第一个参数是json格式的字符串,第二个参数是boolean值(false转化成对象,true转化成数组,默认false),如果转化失败返回null. 二.遇到的问题在项目中调用了java写的一个web服务,返回的数据是"{'stauts':'1','message':'充值成功'}". 程序接到后用json_decode把结果转化成数组,但转化的结果是null,太奇怪了. 看了一下手册,在手册中发
-
PHP实现json_decode不转义中文的方法
本文实例讲述了PHP实现json_decode不转义中文的方法.分享给大家供大家参考,具体如下: 默认情况下PHP的 json_decode 方法会把特殊字符进行转义,还会把中文转为Unicode编码形式. 这使得数据库查看文本变得很麻烦.所以我们需要限制对于中文的转义. 对于PHP5.4+版本,json_decode函数第二个参数,可以用来限制转义范围. 要限制中文,使用JSON_UNESCAPED_UNICODE参数. json_encode($a, JSON_UNESCAPED_UNICO
-
php5.2以下版本无json_decode函数的解决方法
今天写代码的时候,需要用到json_decode函数,发现php5.2以前的版本没有集成这个函数,不过我们可以通过自定义函数实现. 复制代码 代码如下: function json_decode2($json){$comment = false;$out = '$x='; for ($i=0; $i<strlen($json); $i++){if (!$comment){if (($json[$i] == '{') || ($json[$i] == '[')) $out .= ' array('
-
ON_COMMAND_RANGE多个按钮响应一个函数的解决方法
本文描述了ON_COMMAND_RANGE多个按钮响应一个函数的解决方法. 开发人员需要注意在自定义消息响应函数的声明过程中,一定要注意参数的形式,稍微一疏忽就会导致莫须有的错误,具体以ON_COMMAND_RANGE为例说下. 1.声明消息响应函数:在要添加的工程上添加函数afx_msg void OnButtonPort(); 2.消息映射: BEGIN_MESSAGE_MAP(CXXXDlg, CDialog) //{{AFX_MSG_MAP(CXXXDlg) ON_WM_SYSCOMMA
-
Python实现动态添加类的属性或成员函数的解决方法
某些时候我们需要让类动态的添加属性或方法,比如我们在做插件时就可以采用这种方法.用一个配置文件指定需要加载的模块,可以根据业务扩展任意加入需要的模块. 本文就此简述了Python实现动态添加类的属性或成员函数的解决方法,具体方法如下: 首先我们可以参考ulipad的实现:mixin. 这里做的比较简单,只是声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数. 代码如下所示: class WinBAS(Bas): def
-
ECSHOP在PHP5.5及高版本上报错的解决方法
Ecshop却没来得及修改,如果在高版本的php虚拟主机上安装ecshop程序,出现兼容性问题. 小编在本地环境php5.5上安装出现以下两种报错提示: Only variables should be passed by reference php Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead-? 通过在网络上查找,小编发现并不是只能在低版本的php中安装
-
定时器(setTimeout/setInterval)调用带参函数失效解决方法
首先来看下定时器的用法 1. setInterval(code,millisec[,"lang"]) setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. 参数 描述 code 必需,要调用的函数或要执行的代码串. millisec 必需,周期性执行或调用 code 之间的时间间隔,以毫秒计.2.setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 参数 描述 code 必需,要调用
-
MySQL压缩版zip安装问题的解决方法
今天安装mysql的压缩版出现了问题,就是服务总是启动不了,折腾了两三个小时.后面实在是想不明白,就直接把注册表的东西删了. 如果你之前安装过mysql,则进行删除mysql:E:\work\mysql-5.7.23-winx64\bin>sc delete mysql 删除注册表的东西,参照这个博主:https://www.jb51.net/article/157590.htm 因为之前用过压缩版的mysql,可能有遗留. 当然你需要去下载:mysql-5.7.23-winx64.zip这个东
-
php set_magic_quotes_runtime() 函数过时解决方法
把函数: set_magic_quotes_runtime($new_setting); 替换成: ini_set("magic_quotes_runtime", $new_setting);
-
详解VS2019使用scanf()函数报错的解决方法
目录 scanf_s()函数 scanf_s()函数与scanf()函数的区别 VS2019使用scanf()函数报错的解决方法 解决方法一 解决方法二 解决方法三 解决方法四 首先来看一段很简单的C语言代码 #include<stdio.h> int main(void) { char s[10]; scanf("%s",s); printf("%s",s); return 0; } 这段代码的作用就是输入一个字符串,再把这个字符串输出.在其他IDE(
-
go语言版的ip2long函数实例
本文实例讲述了go语言版的ip2long函数.分享给大家供大家参考.具体分析如下: 这里介绍的go语言版的ip2long 函数不会对 IP 的合法性进行校验. 复制代码 代码如下: // 注意: 该函数不会对 IP 的合法性进行校验 func Ip2Long(ip string) (ips string) { var ip_pieces = strings.Split(ip, ".") ip_1, _ := strconv.ParseInt(ip_pieces[0], 10,
随机推荐
- 作为老司机使用 React 总结的 11 个经验教训
- jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
- Java 替换空格
- Java使用DateFormatter格式化日期时间的方法示例
- Shell编程的一些知识集合
- Python内置函数OCT详解
- asp.net 图片的读写入库实现代码
- 人民币数字转换成大写形式
- PHP获取用户访问IP地址的5种方法
- Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
- Android自定义圆形进度条
- Vue.js学习记录之在元素与template中使用v-if指令实例
- js截取中英文字符串、标点符号无乱码示例解读
- javascript中日期函数new Date()的浏览器兼容性问题
- 基于jQuery实现滚动切换效果
- js实现字符串和数组之间相互转换操作
- 图解JavaScript中的this关键字
- CentOS 5.11服务器安装配置LAMP服务器(Apache+PHP5+MySQL)
- Java中volatile关键字实现原理
- Java多线程中线程间的通信实例详解