PHP中file_get_contents读取JSON后json_decode返回null的解决咨询
解决json_decode返回null的问题
第一步:精准定位错误原因
先确认json_last_error_msg()返回的具体错误信息,这是排查的核心:
$str = file_get_contents('jsondump.json'); $json = json_decode($str); echo json_last_error_msg(); // 输出错误信息,根据结果针对性处理
针对常见问题的处理方案
1. 移除UTF-8 BOM头
UTF-8 BOM是隐形的开头字符,会导致JSON解析失败,即使编码检测显示为UTF-8也可能存在:
$str = file_get_contents('jsondump.json'); $str = preg_replace('/^\x{FEFF}/u', '', $str); // 移除BOM $json = json_decode($str);
2. 清理无效空白字符
换行符本身不影响JSON解析,但如果存在全角空格、特殊制表符等无效空白,可统一过滤:
$str = file_get_contents('jsondump.json'); $str = preg_replace('/\s+/', ' ', $str); // 替换所有空白为普通空格 $json = json_decode($str);
3. 验证JSON语法正确性
将文件内容复制到本地JSON校验工具(或直接手动检查),确认:
- 引号是否配对(必须是英文双引号)
- 布尔值是否为小写
true/false(JSON不支持大写或其他拼写) - 数组/对象末尾是否有多余逗号
- 实际文件中不存在示例里的
...占位符
4. 排查文件读取完整性
用var_dump($str)确认读取的内容和JSON文件完全一致,没有截断情况;如果文件过大,可临时调整内存限制:
ini_set('memory_limit', '256M'); $str = file_get_contents('jsondump.json'); $json = json_decode($str);
内容的提问来源于stack exchange,提问作者Karan
相关产品推荐
相关产品推荐

