amazon

Now Loading...
Now Loading...

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.

amazon

Now Loading...

このブログの人気の投稿

フローリングのワックス剥がしを簡単にするにはどうするのが良いのだろうか

パソコンでビデオを高画質再生するmadVRビデオレンダラを使ってみる

ビデオカメラでライブ配信をしたいのでHDMIキャプチャ機器を調べた