用于字符串数组过滤器的Jayway Jsonpath语法?

时间:2016-01-19 19:27:31

标签: jsonpath apache-nifi

我正在尝试在Nifi中使用EvaluateJsonPath处理器,并且遇到了jayway jsonpath语法的问题。 我的对象如下所示:

$.[?(@.tags[1] =~ /xyz/i)]

我想基于标签路由消息 - 我希望包含“xyz”的所有内容都以一种方式路由,而不包含它的所有内容都以另一种方式路由。 使用http://jsonpath.herokuapp.com/我一直在测试并试图找出基于包含匹配字符串数组的json对象进行过滤的语法。我可以根据公开索引进行匹配(所以C0(...) nogil C1(...) with gil 工作正常),但我不能保证标签字段中对象的顺序或数量。

有没有办法在jayway json模块中执行此操作?我看到了filter the Json according to string in an array in JSONPATH我尝试过,但它似乎不适用于上面的模拟器。

1 个答案:

答案 0 :(得分:3)

我不知道如何在一个EvaluateJsonPath处理器步骤中执行此操作。但它肯定可以分两步完成:

  1. 使用EvaluateJsonPath过滤" xyz"使用类似Table_B的JsonPath表达式标记出标记数组,并将处理器返回类型设置为select b.B2, a.A3 from Table_A a join Table_B b on (a.A_ID = b.B_ID) ,以便返回数组。这将导致匹配$.tags[?(@ =~ /xyz/i)]和非匹配文件json
  2. 使用RouteOnAttribute基于生成的数组进行路由,使用类似["xyz"]的表达式。
  3. 将JSON作为正则表达式的文本进行评估以匹配标记也是值得考虑的。