PHP读取JSON语言文件返回NULL问题求助
解决JSON解码返回NULL的问题
你的问题根源在于逐行读取JSON文件后单独解码每一行——JSON是一个完整的结构化数据,除非你的文件是每行一个独立的JSON对象(JSON Lines格式),否则单独一行的内容是不完整的JSON,自然会让json_decode返回NULL。
给你两个可行的解决方案:
方案1:一次性读取整个文件(推荐)
用file_get_contents直接读取整个文件内容,再进行解码,这是处理JSON文件最简洁的方式:
// 读取整个JSON文件内容 $jsonContent = file_get_contents("./language/english/english.json"); // 解码为关联数组 $data = json_decode($jsonContent, true); // 输出结果 var_dump($data);
方案2:逐行读取后拼接完整内容再解码
如果一定要用fopen系列函数,需要先把所有行拼接成完整的JSON字符串,再解码:
$file = fopen("./language/english/english.json", "r"); $jsonContent = ''; // 逐行读取并拼接 while(!feof($file)) { $jsonContent .= fgets($file); } fclose($file); // 解码并输出 $data = json_decode($jsonContent, true); var_dump($data);
额外调试技巧
以后遇到json_decode返回NULL的情况,可以用json_last_error_msg()获取具体错误信息,帮你快速定位问题,比如:
$data = json_decode($jsonContent, true); if ($data === null) { echo 'JSON解码失败:' . json_last_error_msg(); }
内容的提问来源于stack exchange,提问作者P. Nick
相关产品推荐
相关产品推荐

