如何通过nifi处理器转换
{
"values": [
[
"id",
"type",
"name",
"mobile no"
],
[
"xyz",
"detail",
"bob",
"5283992123"
],
[
"pqr",
"seconDEtail",
"bob2",
"6746789887"
]
]
}
到
[
{
"id": "xyz",
"type": "detail",
"name": "bob",
"mobile no ": "5283992123"
},
{
"id": "pqr",
"type": "seconDEtail",
"name": "bob2",
"mobile no ": "6746789887"
}
]
如何通过nifi处理器高效地完成这种转换。数据是由某个远程位置动态提供的
您可以通过运行两个班次来获得所需的输出:
- 创建临时对象,并按数组中的位置分组键和值。
- 然后迭代该对象值以创建输出
[
{
"operation": "shift",
"spec": {
"values": {
// first element in array
"0": {
// for all items in array
"*": {
// set value as n.key
"@": "&.key"
}
},
// for everything else in the array
"*": {
// for all items in array
"*": {
// set values as n.value[]
"@": "&.values"
}
}
}
}
},
{
"operation": "shift",
"spec": {
// for all items in our temp object
"*": {
"values": {
// for each values
"*": {
// set value with key in our temp object and use index as array position
"@": "[&1].@(3,key)"
}
}
}
}
}
]
和更改特定键的值:
[
{
"operation": "shift",
"spec": {
"values": {
// first element in array
"0": {
// for all items in array
"*": {
// match id
"id": {
// override value
"#transaction_id": "&2.key"
},
// for everything else
"*": {
// set value as n.key
"@1": "&2.key"
}
}
},
// for everything else in the array
"*": {
// for all items in array
"*": {
// set values as n.value[]
"@": "&.values"
}
}
}
}
},
{
"operation": "shift",
"spec": {
// for all items in our temp object
"*": {
"values": {
// for each values
"*": {
// set value with key in our temp object and use index as array position
"@": "[&1].@(3,key)"
}
}
}
}
}
]