承認されたソリューションは機能しません (もう ?) twig が出力を自動エスケープし、すべての JSON"
を"
; で変更するためです。
同等のraw
フィルターを使用する必要があります。
<script type="text/javascript">
nickname = {{ profile.nickname|json_encode()|raw }}; // Nickname will be a string
// 2nd solution if you have more informations related to profile
profile = {
nickname: {{ profile.nickname|json_encode()|raw }},
lastname: {{ profile.lastname|json_encode()|raw }}
};
// Profile is now an object with a nickname property.
// use profile.nickname on your javascripts
</script>
そうは言っても、生の JSON を JavaScript に直接出力すると、いくつかの問題が発生する可能性があります。この構成では次のようになります。
<script>
var myvar = {{ '{"test": "</script>"}'|raw }};
</script>
JSON 内の</script>
タグは HTML パーサーによって解釈され、スクリプトが破損します。
これを行う本当に正しい方法は、JSON をエスケープされた文字列として出力し、それを js スクリプト内で解析することです。
<script>
var myvar = JSON.parse('{{ '{"test": "</script>"}'|e('js') }}');
</script>