NIFI:使用EvaluateJsonPath Processor从JSON数组中提取特定值?

时间:2017-12-18 23:13:55

标签: json apache-nifi

我有以下JSON structure,我想从包含3的上下文中的值中提取All UpdateCounter's。以下是我尝试过的,但它不起作用:

$.counters.aggregateSnapshot.counters.[context=="All UpdateCounter\'s"].valueCount

可能的NIFI表达是什么?

2 个答案:

答案 0 :(得分:2)

1 - SplitJson - 关于$ .Conters 2 - EvaluateJsonPath

$。ID

$。上下文

$。名称

$。valueCount

$。值

3 - RouteonAttribute

路线规则:

$ {context:contains('All UpdateCounter \'s')}

$ {context:equals('All UpdateCounter \'s')}

4 - 提取文字 - 如果你想要它像csv

$ {ID},$ {上下文},$ {名称},$ {valueCount},$ {值}

答案 1 :(得分:1)

即使这是一个古老的问题,未来的读者也可以从中受益:JoltTransformJSON呢?它仅使用一个处理器并返回您需要的内容:

震动转换DSL:Shift

震动说明

[
  {
    "operation": "shift",
    "spec": {
      "counters": {
        "aggregateSnapshot": {
          "counters": {
            "*": {
              "*": {
                "context": {
                  "All UpdateCounter's": {
                    "@3": "results"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

结果:

{
  "results" : {
    "9" : {
      "id" : "xxxxxxx",
      "context" : "All UpdateCounter's",
      "name" : "flag",
      "valueCount" : 3,
      "value" : "3"
    }
  }
}

使用以下设置进行测试:Jolt Transform Demo(Web应用程序不允许我永久链接该示例,因此下面是图片):

enter image description here