Node-redのJSonataの事例1 〜グローバル変数の検索に別の変数の値を使う〜

Node-redのJSonataの事例1 〜グローバル変数の検索に別の変数の値を使う〜:


はじめに

Node-redではJSonataが使えます。

これ結構便利なんですが、あまりJSonataの本家サイトのガイド見ても基本的な事しか書いてないので、色々試行錯誤した結果をメモします。

(全三部作です。)


グローバル変数で、検索時に変数を使いたい時

例えば、Global変数の中に遊園地の一覧が配列で格納されたTMPというJSONがあるとします。

[ 
  { 
    "name":"東京ネズミーパーク", 
    "pref":"Chiba", 
    "serial":000001 
  }, 
  { 
    "name":"ドイツの村", 
    "pref":"chiba", 
    "serial":000002 
  }, 
  { 
    "name":"読み書きランド", 
    "pref":"tokyo", 
    "serial":000003 
  } 
] 
それで、例えばchibaのテーマパークのシリアルを一覧したい場合、JSonata的には

$globalContext( "TMP" )[ pref = "chiba"].serial 
と書けば良いんだけど、この"chiba"に当たる箇所に変数を使いたくなっちゃったんです。

だけどどーにもちゃんと動かない。

そこで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

以上です。ありがとうございました。


第二弾の記事はこちら

https://qiita.com/kouichirou/items/d58a251eef3e50658f37

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)