NIFI的处理器:JSLTTransformJSON 2.4.0

该处理器使用JSLT转换FlowFile JSON有效负载的格式。使用转换后的内容创建新的FlowFile,并将其路由到“成功”关系。如果JSLT转换失败,则将原始FlowFile路由到“失败”关系。

需要注意的是,编译JSLT转换可能相当昂贵。理想情况下,这只会做一次。但是,如果在转换中使用表达式语言,我们可能需要为每个FlowFile创建一个新的转换。

JSLT是一种完整的JSON查询和转换语言。语言设计的灵感来自jq、XPath和XQuery。
JSLT可以用作:
  一种从JSON(.foo.bar[0])中提取值的查询语言,
  一种用于测试JSON对象的过滤/检查语言(以(.foo.bar[0],“http://”开头),
  一种用于在JSON格式之间进行转换的转换语言。


https://github.com/schibsted/jslt
https://gitcode.com/gh_mirrors/js/jslt/blob/master/examples/README.md

Input:

{
  "menu": {
    "popup": {
      "menuitem": [
       {
          "value": "Open",
          "onclick": "OpenDoc()"
        },
        {
          "value": "Close",
          "onclick": "CloseDoc()"
        }
      ]
    }
  }
}

The desired output is:

{
  "result" : {
    "Open" : "OpenDoc()",
    "Close" : "CloseDoc()"
  }
}

This can be done two different ways, depending on whether one wants to hard-wire the output, or make it dynamic.

Hard-wired:

{
  "result" : {
    "Open" : .menu.popup.menuitem[0].onclick,
    "Close" : .menu.popup.menuitem[1].onclick
  }
}

Or, we can turn each value/onclick object into a key/value pair in the output object dynamically, like this:

{
  "result" : {for (.menu.popup.menuitem)
    .value : .onclick
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值