Node-REDのテンプレートノードでjson文字列をエスケープしたくない
Node-REDにはTemplateノードという便利なノードがあります。json形式のデータから値を読み込んで簡単にテキスト化する事ができます。デフォルトではHTMLの特殊文字をエスケープしてくれます。HTMLの応答文を作るには便利なのですがエスケープして欲しくない時はどうするのかな?
また1か月前にやった事を忘れていたので書いておきます。
Node-REDでmySQLのデータベースを管理するWEBページを作ろうと思いました。どのような形にするか試行錯誤しつつ、テーブルデータをHTML化してクライアントへ送ろうと思いました。HTMLタグなんか使ってしまうとクライアントでデータ操作できないのでjavascript内のjsonデータとして埋め込もうと思いました。
こんな風にですね。
Node-REDのmsg.payloadのjsonデータから上のスクリプト文字列を作るにはテンプレートノードで
エスケープして欲しくないんだけど・・・
1か月前にやったはずだけど完全に忘れています。無駄に検索してしまいました。mustacheもいろいろな実装があり、探し当てたコマンドがNode-REDのテンプレートで解釈されるとは限りません。
素直にノードの情報から辿れるmustacheのページを見れば書いてあります。
また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"{}"を3つ並べるか"&"を変数の前に書けば良いようです。
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).
{{{pyaload}}} あるいは {{& payload}}
コメント
コメントを投稿