С сервера API приходит запрос post(x-www-form-urlencoded) со значением(print_r):
Array
(
[status] => 3
[goods] => {\"alias_ZhOSTOVOChERN1488881464\":{\"goodID\":\"8419\",\"name\":\"ЖОСТОВО ЧЕРН\",\"quantity\":\"1\",\"price\":\"1990\"}}
)
Но при попытке получить goods:
$goods = json_decode($_POST['goods']);
Переменная $goods всегда пустая.. Если просто вывести:
echo $_POST['goods'];
То все отлично выводит, а вот json_decode возвращает пустоту. В чем может быть проблема?
Если на стороне сервере ничего изменить нельзя, то как сказал @Moonvvell, нужно предварительно почистить от экранирования.
Самый простой способ - это убрать экранирование одной заменой перед декодированием
$string=str_replace('\"','"',$_POST['goods']);
И тогда все нормально работает - Демо
Это самая простая замена, если будут проскакивать ошибки (например при наличии в тексте конструкций \" - то замены нужно сделать более сложными, цеплять при замене скобки, ( например заменят {\" на {") и т.д.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники