[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: json_decode с кавычками в данных.
djvvs
Есть проблема. В ответе прилетают значения с кавычкой. К примеру:
[{"name":"Ivanov Ivan","title":"Everyone's"}]

Хочется чтоб и такие данные были в массиве.
Что посоветуете?
DedMorozzz
м... декод - раскодирует. Что было - то и получишь. Если была кавычка - то она и будет

А если речь об ЭНкоде, тогда 2 раза сделай енкод

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
djvvs
Цитата (DedMorozzz @ 7.03.2014 - 13:23)
м... декод - раскодирует. Что было - то и получишь. Если была кавычка - то она и будет

А если речь об ЭНкоде, тогда 2 раза сделай енкод

Вот сам код. (сильно порезал данные, но суть думаю ясна)
<?
$json_string='{"name":"Ivanov Ivan","title":"Everyone's"}';

$result = json_decode($json_string, true); //this returns an array
$result = json_decode($json_string); //this returns an object

print_r($result);
?>

в общем из-за этой кавычки в Everyone's, все ломается...
DedMorozzz
или экранируй кавычки или делай ПРАВИЛЬНО енкод

$json_string='{"name":"Ivanov Ivan","title":"Everyone's"}';

делается так:
$json_string= json_encode(array("name"=>"Ivanov Ivan","title"=>"Everyone's"));


А под экранированием подразумевается это
$json_string='{"name":"Ivanov Ivan","title":"Everyone\'s"}';


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
djvvs
Цитата (DedMorozzz @ 7.03.2014 - 13:42)
А под экранированием подразумевается это
$json_string='{"name":"Ivanov Ivan","title":"Everyone\'s"}';

да, это хороший выход.
подскажи еще, пожалуйста, как автоматизировать сей процесс.
DedMorozzz
addslashes()


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
djvvs
Цитата (DedMorozzz @ 7.03.2014 - 14:27)
addslashes()

что то ерунда какая то получилась после addslashes...

{\"name\":\"Ivanov Ivan\",\"title\":\"Everyone\'s\"}

*у меня исходные данные в Json формате...
DedMorozzz
Если сразу JSON строка - то регуляркой
$text = preg_replace('#\'#',"\\'",$text);


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.