Имеется следующий json объект:
{
"ИД": "0f126618-6606-11e7-b4c8-005056c00008",
"НоменклатураИД": "af0412c1-2feb-11e7-8c78-005056c00008",
"Наименование": "1712 Миа",
"ДатаИзменения": "0001-01-01T00:00:00",
"Описание": "",
"Meta_title": "",
"Meta_description": "",
"Meta_keyword": "",
"Теги": "",
"ТканьРегион": "1712 Миа",
"СайтАртикул": "1712",
"СайтСтиль": "Жаккардовый",
"СайтАкция": "Нет",
"СайтПоказыватьВМагазине": "Да"
}
Функция json_decode выводит NULL при попытке вардампа
Но при этом вот такой json объект она нормально декодирует:
{
"ИД": "8574a44b-2b1a-11e7-8c78-005056c00008",
"Наименование": "КПБ \"Дуэт\" [Бамбук-жаккард)",
"НаименованиеПолное": "КПБ \"Дуэт\" [Бамбук-жаккард)",
"Артикул": "360/0034295",
"ЕдиницаИзмеренияКод": "796",
"ЕдиницаИзмеренияНаименование": "шт",
"ВестиУчетПоХарактеристикам": true
}
В чем может быть проблема?
Ответ
Вам присылают метку BOM - byte order mark. Конкретно EFBBBF характерна для UTF8.
Но json_decode не ожидает такой метки и потому считает документ невалидным. Метку можно безопасно удалять:
if (substr_compare($json, "\xEF\xBB\xBF", 0) > 0) {
$json = substr($json, 3);
}
Вообще от этот метки часто проблемы встречаются. Нередко стандарты кодирования (PSR стандарты PHP в том числе) требуют не использовать эту метку.
Комментариев нет:
Отправить комментарий