php url链接地址传数组方法 json_decode解析数组失败 经过url链接的json数组解析出错的解决方法 (原)
先说出现的问题:
请求一个接口(例如 http://www.a.com/getmes.php)需要传一个数组参数 param ,值为 数组 array(0=>'刘师傅',1=>'17600385909')
刚开始我写的直接json_encode()后放url后面,如下
//请求方法示例代码: $url = 'http://www.a.com/getmes.php?t=1'; $param = array(0=>'刘师傅',1=>'17600385909'); $url = $url.'¶m='.json_encode($param); $this->curl_get($url); //接口地址获取数据代码 $param = $_GET['param']; $mes = json_decode($param,true); print_r($mes);
接口地址代码始终打印不出来接收到的param数组
==================================解决方法====================================================
==================================解决方法====================================================
1.数组直接分开写,就不存在要json的情况了
//请求方法示例代码: $url = 'http://www.a.com/getmes.php?t=1'; $param = array(0=>'刘师傅',1=>'17600385909'); for ($i=0; $i < count($param); $i++) { $url .= '¶m[]='.$param[$i]; } $this->curl_get($url); //接口地址获取数据代码 $parm = $_GET['param']; $mes = json_decode($param); print_r($mes);
2.就是解决为什么json_decode出错的问题.
因为json_encode数组的时候默认会将数组里面加''\''转义符,也就是他的存在,json数据被当成了string字符串,所以才导致json_decode失败. 解决办法就是接收到json数据后,先去掉转义符"\"再json_decode
//请求方法示例代码: $url = 'http://www.a.com/getmes.php?t=1'; $param = array(0=>'刘师傅',1=>'17600385909'); $url = $url.'¶m='.json_encode($param); $this->curl_get($url); //接口地址获取数据代码 $parm = $_GET['param']; $mes = json_decode(stripslashes($param),true); print_r($mes);