Имеются следующие строки:
//$json = '[{"sku":"5200001200057","model":"516187A"},{"sku":"5200001200002","model":"521387"}]'; // work typed manually as prospekt.json
$json = '[{"sku":"5200001200057","model":"516187A"},{"sku":"5200001200002","model":"521387"}]'; // prospekt.json not work
$res = json_decode($json, true); // возвращает NULL
Проверяю ошибку:
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - Ошибок нет';
break;
case JSON_ERROR_DEPTH:
echo ' - Достигнута максимальная глубина стека';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Некорректные разряды или не совпадение режимов';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Некорректный управляющий символ';
break;
case JSON_ERROR_SYNTAX:
echo ' - Синтаксическая ошибка, не корректный JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Некорректные символы UTF-8, возможно неверная кодировка';
break;
default:
echo ' - Неизвестная ошибка';
break;
}
Выдает "Синтаксическая ошибка, не корректный JSON"
Я вообще думал, что скорее всего будет ошибка связанная с кодировкой. Так как исходный файл декодируется нормально. А при пересохранении, уже не декоридуется. Но php говорит, что у меня ошибка синтаксиса, как это понимать?
--
В ответе сервера по адресу нахождения нужного файла json не хватает
Content-type: application/json; charset=UTF-8
Но сам файл не генерируется в момент обращения, соответственно, заголовок charset отсутствует
--
В редакторе
ideone.com при вставке json непосредственно из файла json, лишних символов, как описано в комментариях, не увидел. Но увидел их с помощью редактора FAR.
Решение проблемы
Отправил снимок 1С-нику.
Ответ:
"3 первых символа - это маркер UTF-8. Преобразовывается в "артефакт" потому что считывается побитно а не как текстовый документ, поэтому считывает и этот маркер. Полечил на уровне побитных операций - удалил маркер UTF-8".