首页 / JSON / phpjson转数组出错求助
phpjson转数组出错求助
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了phpjson转数组出错求助,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7474字,纯文字阅读大概需要11分钟。
内容图文
1:先输出json//组合医生信息JSON$jsonDoctorInfo = "{\"mecdoctor\":[";$jsonDoctorInfo .= "{\"doctorId\":\"".$doctorId."\",\"doctorName\":\"".$strDoctorName."\", \"doctorprice\":\"".$strPrice."\",\"expertise\":\"".$strExpertise."\",\"departments\":\"".$strdepartments."\",\"doctorTitle\":\"".$strTitle."\",\"doctorPhoto\":\"".$strDoctorPhoto."\"}";$jsonDoctorInfo .= "]}";
2:获取并decode
$jsonGetDoctorInfoData = json_encode($jsonGetDoctorInfoData);
$objGetDoctorInfoData = json_decode($jsonGetDoctorInfoData);
输出:
{"mecdoctor":[{"doctorId":"","doctorName":"XXXX", "doctorprice":"122","expertise":"XXXXX","departments":"医内科","doctorTitle":"主任医师","doctorPhoto":"hmh"}]}
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; }
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));
Array( [mecdoctor] => Array ( [0] => Array ( [doctorId] => [doctorName] => XXXX [doctorprice] => 122 [expertise] => XXXXX [departments] => 医内科 [doctorTitle] => 主任医师 [doctorPhoto] => hmh ) ))你并没有给出出错行附近的代码,自然也就不知道你遇到了什么问题了
谢谢版主,
我在第二步获取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));
Array( [mecdoctor] => Array ( [0] => Array ( [doctorId] => [doctorName] => XXXX [doctorprice] => 122 [expertise] => XXXXX [departments] => 医内科 [doctorTitle] => 主任医师 [doctorPhoto] => hmh ) ))你并没有给出出错行附近的代码,自然也就不知道你遇到了什么问题了
另外请问一下,为什么我通过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));//正常输出
请问这是为什么?
没有问题呀
$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<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( [mecdoctor] => Array ( [0] => Array ( [doctorId] => [doctorName] => XXXX [doctorprice] => 122 [expertise] => XXXXX [departments] => 医内科 [doctorTitle] => 主任医师 [doctorPhoto] => hmh ) ))
是啊版主,但是用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));//正常输出
请问这是为什么?
$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));//正常输出版主大人,麻烦你看看这是什么问题呢,刚那个问题好了。
没有问题呀
$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<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( [mecdoctor] => Array ( [0] => Array ( [doctorId] => [doctorName] => XXXX [doctorprice] => 122 [expertise] => XXXXX [departments] => 医内科 [doctorTitle] => 主任医师 [doctorPhoto] => hmh ) ))
那是编码问题!
json_decode 只能识别 utf-8 编码的数据
内容总结
以上是互联网集市为您收集整理的phpjson转数组出错求助全部内容,希望文章能够帮你解决phpjson转数组出错求助所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。