php json转数组出错求助

WBOY
Release: 2016-06-23 14:23:25
Original
1424 people have browsed it

1:先输出json

//组合医生信息JSON$jsonDoctorInfo  = "{\"mecdoctor\":[";$jsonDoctorInfo .= "{\"doctorId\":\"".$doctorId."\",\"doctorName\":\"".$strDoctorName."\", \"doctorprice\":\"".$strPrice."\",\"expertise\":\"".$strExpertise."\",\"departments\":\"".$strdepartments."\",\"doctorTitle\":\"".$strTitle."\",\"doctorPhoto\":\"".$strDoctorPhoto."\"}";$jsonDoctorInfo .= "]}";
Copy after login

2:获取并decode
$jsonGetDoctorInfoData = json_encode($jsonGetDoctorInfoData);
$objGetDoctorInfoData = json_decode($jsonGetDoctorInfoData);
输出:
{"mecdoctor":[{"doctorId":"","doctorName":"XXXX", "doctorprice":"122","expertise":"XXXXX","departments":"医内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}
Copy after login

3:将json转换成数组
//解析JSON数据	function _json_decode($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;	}
Copy after login

4:出现问题
Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/u945504094/public_html/config/config.inc.php(876) : eval()'d code on line 1



回复讨论(解决方案)

请帮我看看到底是错到哪了。

$s = '{"mecdoctor":[{"doctorId":"","doctorName":"XXXX", "doctorprice":"122","expertise":"XXXXX","departments":"医内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(json_decode($s, true));
Copy after login
Copy after login
Array(    [mecdoctor] => Array        (            [0] => Array                (                    [doctorId] =>                     [doctorName] => XXXX                    [doctorprice] => 122                    [expertise] => XXXXX                    [departments] => 医内科                    [doctorTitle] => 主任医师                    [doctorPhoto] => hmh                )        ))
Copy after login
Copy after login
Copy after login
Copy after login
你并没有给出出错行附近的代码,自然也就不知道你遇到了什么问题了

谢谢版主,
我在第二步获取JSON后,将$s带入function _json_decode($json){中出现错误
4:出现问题
Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/u945504094/public_html/config/config.inc.php(876) : eval()'d code on line 1



$s = '{"mecdoctor":[{"doctorId":"","doctorName":"XXXX", "doctorprice":"122","expertise":"XXXXX","departments":"医内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(json_decode($s, true));
Copy after login
Copy after login
Array(    [mecdoctor] => Array        (            [0] => Array                (                    [doctorId] =>                     [doctorName] => XXXX                    [doctorprice] => 122                    [expertise] => XXXXX                    [departments] => 医内科                    [doctorTitle] => 主任医师                    [doctorPhoto] => hmh                )        ))
Copy after login
Copy after login
Copy after login
Copy after login
你并没有给出出错行附近的代码,自然也就不知道你遇到了什么问题了

另外请问一下,为什么我通过file_get_content获取的JSON字串,decode的时候加了true参数就没法解析成数组,但是直接将获取的json付给一个变量后测试就能转成数组呢

$urlGetDoctorInfo = "http://127.0.0.1:8080/mobileInterface/mobileDataInterface.php?Action=showDoctorInfo&doctorid=".$_REQUEST['doctorid'];$jsonGetDoctorInfoData =  file_get_contents($urlGetDoctorInfo);print_r(json_decode($jsonGetDoctorInfoData ,true));//数据就是空的//将字串穿付给变量后$s= '{"mecdoctor":[{"doctorId":"","doctorName":"XXX", "doctorprice":"122","expertise":"XXX","departments":"内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(json_decode($s,true));//正常输出
Copy after login
Copy after login

请问这是为什么?

没有问题呀

$s = '{"mecdoctor":[{"doctorId":"","doctorName":"XXXX", "doctorprice":"122","expertise":"XXXXX","departments":"医内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(_json_decode($s));    function _json_decode($json){        $comment = false;        $out = '$x=';        for ($i=0; $i
Copy after login
Copy after login
Array(    [mecdoctor] => Array        (            [0] => Array                (                    [doctorId] =>                     [doctorName] => XXXX                    [doctorprice] => 122                    [expertise] => XXXXX                    [departments] => 医内科                    [doctorTitle] => 主任医师                    [doctorPhoto] => hmh                )        ))
Copy after login
Copy after login
Copy after login
Copy after login

是啊版主,但是用file获取的就不行。
另外请问一下,为什么我通过file_get_content获取的JSON字串,decode的时候加了true参数就没法解析成数组,但是直接将获取的json付给一个变量后测试就能转成数组呢

$urlGetDoctorInfo = "http://127.0.0.1:8080/mobileInterface/mobileDataInterface.php?Action=showDoctorInfo&doctorid=".$_REQUEST['doctorid'];$jsonGetDoctorInfoData =  file_get_contents($urlGetDoctorInfo);print_r(json_decode($jsonGetDoctorInfoData ,true));//数据就是空的//将字串穿付给变量后$s= '{"mecdoctor":[{"doctorId":"","doctorName":"XXX", "doctorprice":"122","expertise":"XXX","departments":"内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(json_decode($s,true));//正常输出
Copy after login
Copy after login

请问这是为什么?

$urlGetDoctorInfo = "http://127.0.0.1:8080/mobileInterface/mobileDataInterface.php?Action=showDoctorInfo&doctorid=".$_REQUEST['doctorid'];$jsonGetDoctorInfoData =  file_get_contents($urlGetDoctorInfo);print_r(json_decode($jsonGetDoctorInfoData ,true));//数据就是空的//将字串穿付给变量后$s= '{"mecdoctor":[{"doctorId":"","doctorName":"XXX", "doctorprice":"122","expertise":"XXX","departments":"内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(json_decode($s,true));//正常输出版主大人,麻烦你看看这是什么问题呢,刚那个问题好了。
Copy after login

没有问题呀
$s = '{"mecdoctor":[{"doctorId":"","doctorName":"XXXX", "doctorprice":"122","expertise":"XXXXX","departments":"医内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}';print_r(_json_decode($s));    function _json_decode($json){        $comment = false;        $out = '$x=';        for ($i=0; $i
Copy after login
Copy after login
Array(    [mecdoctor] => Array        (            [0] => Array                (                    [doctorId] =>                     [doctorName] => XXXX                    [doctorprice] => 122                    [expertise] => XXXXX                    [departments] => 医内科                    [doctorTitle] => 主任医师                    [doctorPhoto] => hmh                )        ))
Copy after login
Copy after login
Copy after login
Copy after login

那是编码问题!
json_decode 只能识别 utf-8 编码的数据

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template