我在PHP中有一个奇怪的JSON解码问题。某个JSON文件(只有这个)可靠地产生解码错误。 PHP部分没什么特别的:
$data = array();
if (is_file(DIR.'config.json')) {
$data = json_decode(DIR.'config.json');
}
// diagnostics:
var_dump($data); // --> NULL (would be array() if decoding didn't happen)
var_dump(json_last_error()); // --> int(4) === JSON_ERROR_SYNTAX
var_dump(json_last_error_msg()); // --> string(20) "unexpected character"
echo file_get_contents(DIR.'config.json'); // --> '["a"]'
我尝试了什么:
["a"]
。echo
工作得很好。echo
声明证明。 JSON文件位于docroot中。不幸的是,PHP的JSON lib没有更准确地说明错误,所以我不知道真正会导致错误。
有谁有想法,我该怎么办?
答案 0 :(得分:3)
您不会解码文件内容,而是解码文件本身的名称,这就是您获取null的原因。你的代码应该是:
$data = array();
if (is_file(DIR.'config.json')) {
$data = json_decode(file_get_contents(DIR.'config.json'));
}
答案 1 :(得分:2)
json_decode(DIR.'config.json');
您正在尝试解码字符串"<whatever-DIR-is>config.json"
。那不是有效的JSON字符串。你可能想要:
json_decode(file_get_contents(DIR.'config.json'));
您可能还想要更多咖啡。