JavaScript JSON.parse のために Ruby ハッシュを JSON に適切にエスケープするにはどうすればよいですか?
概要
JavaScript JSON.parseで解析できるJSON文字列にRubyハッシュを埋め込もうとしています。
逃げる問題があります。
ルビィ:
props = {sring: 'He said "hey"'}
ハムル
:javascript
const props = JSON.parse('#{props.to_json}');
これは次のようにレンダリングされます
<script>
const props = JSON.parse('{"sring":"He said \"hey\""}');
</script>
これにより、次のエラーがスローされます。
Uncaught SyntaxError: Expected ',' or '}' after property value in JSON at position 19
at JSON.parse (<anonymous>)
at (index):58:24
少し実験してみたところ、次の文字列は JSON.parse で解析可能ですが、エスケープ関数からそれを生成する方法がわかりません。
<script>
const props = JSON.parse('{"sring":"He said \\\"hey\\\""}');
</script>
解決策
はい、奇妙な動作ですが、次のようにこの目的のためにいつでも DOM を使用できます
- props = {string: 'He said "hey"'}
div[data-props=props.to_json id="props"]
javascript:
const props = JSON.parse(document.getElementById("props").dataset.props)