1

我是 Apache Nifi 的新手,遇到以下问题:我想将 json 文件转换如下:来自:

{
    "Property1": "x1",
    "Property2": "Tag_**2ABC**",
    "Property3": "x3",
    "Property4": "x4"
    }

至:

{
    "**2ABC**_Property1": "x1",
    "**2ABC**_Property3": "x3",
    "**2ABC**_Property4": "x4"
    },

它的意思是:从某个属性中获取值来更新所有其他属性。我可以找到使用 JoltTransformer-Processor 的示例,当更新仅添加一个字符串时效果很好。但不适用于我的情况到目前为止我所做的:我已经使用 evaluateJSONPath 处理器设置了每个属性。但是我只是尝试了很多可能性来使用更新属性处理器来完成它,但没有成功。我所有可能的测试看起来像(在 UpdateAttribute 内):

Property1 --> ${'Property2':substring(4,6)}"_"${'Property1'}

使用颠簸:

[
{"operation": "modify-overwrite-beta",
    "spec": {
        "Property1": "${'Property2':substring(4,6)}_${'Property1'}"
            }
}
]

我在这里错过了哪一点?提前致谢!

4

1 回答 1

3

我不知道 Nifi,但这里是你如何在 Jolt 中做到的。

规格

[
  {
    "operation": "shift",
    "spec": {
      // match Property2
      "Property2": {
        "Tag_*": { // capture the nasty "**2ABC**" part to reference later
          // go back up the tree to the root
          "@2": {
            // match and ignore Property2
            "Property2": null,
            //
            // match Property* and use it and the captured 
            //  "prefix" to create the output key
            //  &(2,1) references the Tag_*, and pull off the "**2ABC**" part
            "Property*": "&(2,1)_&"
          }
        }
      }
    }
  }
]
于 2017-09-21T23:39:00.140 回答