Приходит мне от API такой вот json:
{"value\":\"г. Москва\/Общество с ограниченной ответственностью \\"Автостандарт-36\\"\"}
Функция json_decode($result,true); при таком исходе ломается, когда натыкается опять на кавычки, в которых значение - Автостандарт-36.
Пробовал заменять слеши вот так, но всё равно что-то не так.
$result = str_replace('\\"', ' ', $result);
как правильно отпарсить данные json?
Попробуйте такой вариант:
function fixed($json)
{
return str_replace('`', '"', preg_replace(
'/`([^`]+)`(?=`)/',
'\\\"$1\"',
str_replace(['\"', '"'], '`', $json))
);
}
print_r(json_decode(fixed($json), true));
Костыльный приход, костыльное решение:
$result = '{"value\":\"г. Москва\/Общество с ограниченной ответственностью \\\\"Автостандарт-36\\\\"\"}';
var_dump($result);
$result = str_replace('\"', '"', $result);
var_dump($result);
var_dump (json_decode($result,true));
Тогда, входная строка:
{"value\":\"г. Москва\/Общество с ограниченной ответственностью \\"Автостандарт-36\\"\"}
После str_replace:
{"value":"г. Москва\/Общество с ограниченной ответственностью \"Автостандарт-36\""}
Результат:
array(1) {
["value"]=>
string(124) "г. Москва/Общество с ограниченной ответственностью "Автостандарт-36""
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей