#php #json
#php #json
Вопрос:
Файл выглядит нормально при чтении в моем редакторе.
$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 из файла.2. Это означает, что ваш файл не содержит допустимый JSON.
3. На случай, если кто-то добрался сюда. «Я столкнулся с той же проблемой. Я обнаружил, что читаю
1024
символы, а вся длина строки была больше этого. И это было причиной проблемы. Затем обновление длины привело к проблеме «. Принятый ответ не помог.
Ответ №1:
вы можете удалить управляющий символ, PCRE поддерживает нотацию POSIX для классов символов [:cntrl:]
$json = preg_replace('/[[:cntrl:]]/', '', $json);
$json = json_decode($json, true);
var_dump($json);
echo json_last_error_msg();
Комментарии:
1. В общем, это неправильный подход. Просто представьте, что у вас есть следующая строка: «hello nworld», где n — неэкранированный (0x0a) символ.
preg_replace
исправит это, хотя вы останетесь с «helloworld». Вместо этого должен быть исправлен код, который выдает строку в формате json.