我有JSON
个有效载荷;
{
"id": "",
"name": "",
"A": {...},
"B": {...},
"C": {...}
}
我想将A, B and C
字段提取为id and name
字段作为不同的记录。像这样;
{
"id": "",
"name": "",
"A": {...}
}
{
"id": "",
"name": "",
"B": {...}
}
{
"id": "",
"name": "",
"C": {...}
}
我正在使用基于记录的处理器。但是我不知道如何在Nifi中使用基于记录的处理器来做到这一点。
答案 0 :(得分:1)
您可能正在寻找“ EvaluateJsonPath”。您可以添加JSONPath表达式,该表达式将转换为属性或写入流文件。
http://jsonpath.com/是一种方便的网络工具,可以测试您的表情。
答案 1 :(得分:1)
如果您想使用基于记录的处理器,那么JoltTransformRecord可以解决问题。只需将Jolt Transformation DSL
设置为Chain
,将Jolt Specification
设置为:
[
{
"operation": "shift",
"spec": {
"id": "id",
"name": "name",
"*": {
"@": "array.&"
}
}
},
{
"operation": "shift",
"spec": {
"array": {
"*": {
"@(2,id)": "[#2].id",
"@(2,name)": "[#2].name",
"@": "[#2].&"
}
}
}
}
]
这将首先将您的唯一元素放入数组中,并从中分离出公共键,然后将公共键放入所有元素中,同时将数组提取到顶部数组中。
然后,如果您也希望它们也作为不同的FlowFiles,则可以SplitRecord阵列就可以了!