Node-REDのテンプレートノードでjson文字列をエスケープしたくない

テンプレートノード
Node-REDにはTemplateノードという便利なノードがあります。json形式のデータから値を読み込んで簡単にテキスト化する事ができます。デフォルトではHTMLの特殊文字をエスケープしてくれます。HTMLの応答文を作るには便利なのですがエスケープして欲しくない時はどうするのかな?
また1か月前にやった事を忘れていたので書いておきます。


Node-REDでmySQLのデータベースを管理するWEBページを作ろうと思いました。どのような形にするか試行錯誤しつつ、テーブルデータをHTML化してクライアントへ送ろうと思いました。HTMLタグなんか使ってしまうとクライアントでデータ操作できないのでjavascript内のjsonデータとして埋め込もうと思いました。
こんな風にですね。
<script type="text/javascript">
  var json=[ {"key1", "data1"}, {"key2"}, "data2"}, …];
</script>

Node-REDのmsg.payloadのjsonデータから上のスクリプト文字列を作るにはテンプレートノードで
<script type="text/javascript">
  var json= {{pyaload}};
</script>
と書いておけばいいや…と思ったのですが、json形式を表す"{"と"}"などがエスケープされてしまい、クライアントで受け取った時にjavascriptとして解釈されずエラーになってしまいました。

エスケープして欲しくないんだけど・・・
1か月前にやったはずだけど完全に忘れています。無駄に検索してしまいました。mustacheもいろいろな実装があり、探し当てたコマンドがNode-REDのテンプレートで解釈されるとは限りません。

素直にノードの情報から辿れるmustacheのページを見れば書いてあります。
MUSTACHE MANUAL
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
You can also use & to unescape a variable: {{& name}}. This may be useful when changing delimiters (see "Set Delimiter" below).
"{}"を3つ並べるか"&"を変数の前に書けば良いようです。
{{{pyaload}}} あるいは {{& payload}}

コメント

最近のコメント

Threaded Recent Comments will be here.