Node-redのJSonataの事例1 〜グローバル変数の検索に別の変数の値を使う〜
Node-redのJSonataの事例1 〜グローバル変数の検索に別の変数の値を使う〜:
Node-redではJSonataが使えます。
これ結構便利なんですが、あまりJSonataの本家サイトのガイド見ても基本的な事しか書いてないので、色々試行錯誤した結果をメモします。
(全三部作です。)
例えば、Global変数の中に遊園地の一覧が配列で格納されたTMPというJSONがあるとします。
それで、例えばchibaのテーマパークのシリアルを一覧したい場合、JSonata的には
と書けば良いんだけど、この"chiba"に当たる箇所に変数を使いたくなっちゃったんです。
だけどどーにもちゃんと動かない。
そこでFunctionを使うと上手く動きます。
(ちなみに今回の例では、別途書く予定の記事の仕込みとして、$joinで一つのテキストに繋げてます。。)
この{}内に処理内容を記述して、後ろの()内に渡したい引数を記載する感じで書けます。
https://docs.jsonata.org/programming.html#functions
以上です。ありがとうございました。
https://qiita.com/kouichirou/items/d58a251eef3e50658f37
はじめに
Node-redではJSonataが使えます。これ結構便利なんですが、あまりJSonataの本家サイトのガイド見ても基本的な事しか書いてないので、色々試行錯誤した結果をメモします。
(全三部作です。)
グローバル変数で、検索時に変数を使いたい時
例えば、Global変数の中に遊園地の一覧が配列で格納されたTMPというJSONがあるとします。[ { "name":"東京ネズミーパーク", "pref":"Chiba", "serial":000001 }, { "name":"ドイツの村", "pref":"chiba", "serial":000002 }, { "name":"読み書きランド", "pref":"tokyo", "serial":000003 } ]
$globalContext( "TMP" )[ pref = "chiba"].serial
だけどどーにもちゃんと動かない。
そこでFunctionを使うと上手く動きます。
(ちなみに今回の例では、別途書く予定の記事の仕込みとして、$joinで一つのテキストに繋げてます。。)
$join(function($section , $tmplist ){ $tmplist[ pref = $pref ].serial }( $._pref, $globalContext( "TMP" ) ), " ")
一応解説すると、、
function( $a, $b ){ $a & $b }( $A, $B )
本家のガイド
https://docs.jsonata.org/programming.html#functions以上です。ありがとうございました。
コメント
コメントを投稿