Apache nifi 如何在Nifi中从json中提取多个字段?

Apache nifi 如何在Nifi中从json中提取多个字段?,apache-nifi,Apache Nifi,我有这样的JSON负载 { "id": "", "name": "", "A": {...}, "B": {...}, "C": {...} } 我想提取A、B和C字段,并将id和name字段作为不同的记录。像这样, { "id": "", "name": "", "A": {...} } { "id": "", "name": "", "B": {...} } {

我有这样的
JSON
负载

{
   "id": "",
   "name": "",
   "A": {...},
   "B": {...},
   "C": {...}
}
我想提取
A、B和C
字段,并将
id和name
字段作为不同的记录。像这样,

{
       "id": "",
       "name": "",
       "A": {...}
}

{
       "id": "",
       "name": "",
       "B": {...}
}

{
       "id": "",
       "name": "",
       "C": {...}
}
我使用的是基于记录的处理器。但我不知道如何使用基于记录的处理器在Nifi中实现这一点

您可能正在寻找“EvaluateJsonPath”。您可以添加JSONPath表达式,这些表达式将被转换为属性或写入流文件


是一个方便的web工具来测试您的表达式。

如果您想使用基于记录的处理器,那么就可以使用它。只需将
Jolt转换DSL
设置为
Chain
Jolt规范
设置为:

[
  {
    "operation": "shift",
    "spec": {
      "id": "id",
      "name": "name",
      "*": {
        "@": "array.&"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "array": {
        "*": {
          "@(2,id)": "[#2].id",
          "@(2,name)": "[#2].name",
          "@": "[#2].&"
        }
      }
    }
  }
]
这将首先将您的唯一元素放在一个数组中,并将公共键从中分离出来,然后将公共键放在所有元素中,同时将数组提取到顶部数组


然后,如果你想让它们也成为不同的流文件,你可以修改数组,你就得到了

他提到他想使用基于记录的处理器来实现这一点。此外,他不想将它们提取到属性中,因此它不相关。。