php, не могу распарсить json

267
10 марта 2017, 00:54

С сервера 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 возвращает пустоту. В чем может быть проблема?

Answer 1

Если на стороне сервере ничего изменить нельзя, то как сказал @Moonvvell, нужно предварительно почистить от экранирования.

Самый простой способ - это убрать экранирование одной заменой перед декодированием

$string=str_replace('\"','"',$_POST['goods']);

И тогда все нормально работает - Демо

Это самая простая замена, если будут проскакивать ошибки (например при наличии в тексте конструкций \" - то замены нужно сделать более сложными, цеплять при замене скобки, ( например заменят {\" на {") и т.д.

READ ALSO
Свои стили для выпадающего меню

Свои стили для выпадающего меню

Допустим нужно настроить выпадающее меню wordpress под свои нужды, назначить им разные стили, в зависимости от некоторых условийМеню регистрируется...

247
Лог нанесённого урона

Лог нанесённого урона

Добрый день

240
Нужно смешать 2 массива определенным образом

Нужно смешать 2 массива определенным образом

Есть 2 массива c названиями животных:

442
Сортировка массивов php

Сортировка массивов php

Стала задача отсортировать массив, приходящий из БДОдин элелемент из этого массива выглядит так:

244