PHP解码JSON文件无输出问题求助
解决PHP解码JSON无输出的问题
你遇到的无输出问题,大概率是几个小细节没注意到,咱们一步步来排查解决:
1. 先修正print_r的使用方式
你代码里的print_r($json, true),第二个参数设为true时,这个函数会把输出内容作为字符串返回,而不是直接打印到页面。所以要让内容显示出来,要么去掉第二个参数,要么用echo包裹:
// 方式一:去掉第二个参数,直接打印 print_r($json); // 方式二:用echo输出返回的字符串 echo print_r($json, true);
2. 检查JSON文件是否被正确读取
先确认file_get_contents有没有成功获取到文件内容——比如文件路径是否正确(相对路径是相对于当前PHP脚本的执行位置,不是网站根目录),或者文件权限是否允许PHP读取。可以加个简单的判断:
$str = file_get_contents('llt_stops.json'); if ($str === false) { die('无法读取JSON文件,请检查文件路径或权限'); }
3. 排查JSON解码失败的可能
即使你提供的JSON格式是正确的,实际文件可能存在隐藏字符、编码问题导致解码失败,此时json_decode会返回null。可以用json_last_error()来获取具体错误信息:
$json = json_decode($str, true); if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解码失败:' . json_last_error_msg()); }
4. 正确遍历站点数据
如果解码成功,你的JSON结构里,站点数据是存在$json['stops']这个数组里的,所以foreach要遍历这个子数组,而不是整个$json:
foreach ($json['stops'] as $stop) { echo "站点ID:{$stop['id']},名称:{$stop['name']},LocID:{$stop['locId']}<br>"; }
完整测试代码
把以上步骤整合起来,你可以用这段代码来测试:
$str = file_get_contents('llt_stops.json'); if ($str === false) { die('无法读取JSON文件,请检查文件路径或权限'); } $json = json_decode($str, true); if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解码失败:' . json_last_error_msg()); } // 打印整个解码后的数组 print_r($json); // 遍历并输出每个站点信息 echo '<hr>'; foreach ($json['stops'] as $stop) { echo "站点ID:{$stop['id']},名称:{$stop['name']},LocID:{$stop['locId']}<br>"; }
内容的提问来源于stack exchange,提问作者Kim Andersson
相关产品推荐
相关产品推荐

