В своем проекте я использую Symfony 4.3 с Twig и javascript с jquery.
Мне нужно передать кодированный в json объект из php в javascript, но он разбивается двойными кавычками. Например, на стороне php я делаю следующее:
$new_obj = new \stdClass;
$new_obj->value = 'Some data with "double " quotes';
print_r(json_encode($new_obj));exit;
return $this->render('mytemplate.html.twig', [
'new_obj' => $new_obj
]);
Так что здесь print_r(json_encode($new_obj))
дает следующее:
{"value":"Some data with \"double \" quotes"}
, и это выглядит как валидный json, потому что двойные qoutes экранируются с помощьюкосые. Но когда я получаю его в своем шаблоне twig
, я получаю следующее:
{"value":"Some data with "double " quotes"}
Таким образом, двойные кавычки заменяются на "
, а экранирующий слеш удаляется вообще. Я могу восстановить закодированные кавычки с помощью следующего кода:
function htmlDecode(input){
var doc = new DOMParser().parseFromString(input, "text/html");
return doc.documentElement.textContent;
}
но как я могу снова сделать мой JSON действительным? JSON.parse()
говорит
Uncaught SyntaxError: Unexpected token d in JSON at position 26
at JSON.parse (<anonymous>)
[![pic][1]][1]
, и я уже попробовал использовать внутреннюю функцию {{ data|json_encode() }}
на моем необработанном объекте или json_encode($new_obj, JSON_HEX_QUOT)
, но это не помогло.
Любые идеи, как это исправить, приветствуются. Спасибо.