json_decode返回NULL,json_last_error_msg显示“控制字符错误,可能编码不正确”。

17

当我将文件读入我的编辑器时,它看起来很好。

$file = file_get_contents('path/to/file.json');
$json =  json_decode($file, true);
var_dump($json); // null
echo json_last_error_msg(); //Control character error, possibly incorrectly encoded

关于这个错误信息的含义,目前并没有太多相关内容。


1
请问您能否发布您的 file.json 文件吗?因为 json_decode 无法解码您从文件中读取的 JSON 字符串。 - Ravi Dhoriya ツ
3
这句话的意思是您的文件不包含有效的JSON。 - Felix Kling
如果有人到达这里。“我遇到了同样的问题。我发现我读取了1024个字符,而整行长度超过了这个数字。这就导致了问题。然后更新长度解决了这个问题。”被接受的答案没有帮助。 - ssi-anik
1个回答

34

9
一般来说,这种方法是错误的。想象一下你有以下字符串:"hello\nworld",其中 \n 是未转义的 (0x0a) 字符。preg_replace 会修复它,但你最终得到的是 "helloworld"。应该修复生成 JSON 编码字符串的代码而不是用 preg_replace - vbarbarosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接