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].&"
}
}
}
}
]
这将首先将您的唯一元素放在一个数组中,并将公共键从中分离出来,然后将公共键放在所有元素中,同时将数组提取到顶部数组
然后,如果你想让它们也成为不同的流文件,你可以修改数组,你就得到了 他提到他想使用基于记录的处理器来实现这一点。此外,他不想将它们提取到属性中,因此它不相关。。