在 Nifi 中修改 JSON 个键值对
Modifying JSON Key Value Pairs In Nifi
我收到了 JSON 行数据,例如,
{"signalName": "IU_BATT_ParkAssist", "msgId": 2268, "epoch": 1582322746, "usec": 376360, "vlan": "-1", "msgName": "EBS_Frame12", "vin": "000004", "value": 14.171869, "timestamp": 1582322746376}
我想修改输出以生成,
{"IU_BATT_ParkAssist":14.171869, "msgId": 2268, "epoch": 1582322746, "usec": 376360, "vlan": "-1", "msgName": "EBS_Frame12", "vin": "000004", "timestamp": 1582322746376}
signalName 和 value 键组合成一个新的 key:value 对,其中键是 signalName,值是值字段,"IU_BATT_ParkAssist":14.171869 以及其他原始键值对。
鉴于 signalName 字段将在每一行中动态变化,我如何在 Nifi 中实现这一点?
Try with below spec:
[
{
"operation": "shift",
"spec": {
"@(1,value)": "@(2,signalName)",
"*": "&"
}
},
{
"operation": "remove",
"spec": {
"signalName": "",
"value": ""
}
}
]
在 shift 操作中我们合并 signalName and value
.
在 remove 操作中,我们从 json
数据中删除 signalName and value
。
Output:
{
"IU_BATT_ParkAssist" : 14.171869,
"msgId" : 2268,
"epoch" : 1582322746,
"usec" : 376360,
"vlan" : "-1",
"msgName" : "EBS_Frame12",
"vin" : "000004",
"timestamp" : 1582322746376
}
我收到了 JSON 行数据,例如,
{"signalName": "IU_BATT_ParkAssist", "msgId": 2268, "epoch": 1582322746, "usec": 376360, "vlan": "-1", "msgName": "EBS_Frame12", "vin": "000004", "value": 14.171869, "timestamp": 1582322746376}
我想修改输出以生成,
{"IU_BATT_ParkAssist":14.171869, "msgId": 2268, "epoch": 1582322746, "usec": 376360, "vlan": "-1", "msgName": "EBS_Frame12", "vin": "000004", "timestamp": 1582322746376}
signalName 和 value 键组合成一个新的 key:value 对,其中键是 signalName,值是值字段,"IU_BATT_ParkAssist":14.171869 以及其他原始键值对。
鉴于 signalName 字段将在每一行中动态变化,我如何在 Nifi 中实现这一点?
Try with below spec:
[
{
"operation": "shift",
"spec": {
"@(1,value)": "@(2,signalName)",
"*": "&"
}
},
{
"operation": "remove",
"spec": {
"signalName": "",
"value": ""
}
}
]
在 shift 操作中我们合并 signalName and value
.
在 remove 操作中,我们从 json
数据中删除 signalName and value
。
Output:
{
"IU_BATT_ParkAssist" : 14.171869,
"msgId" : 2268,
"epoch" : 1582322746,
"usec" : 376360,
"vlan" : "-1",
"msgName" : "EBS_Frame12",
"vin" : "000004",
"timestamp" : 1582322746376
}