Изменение JSON пар значений ключей в Nifi - PullRequest
2 голосов
/ 22 февраля 2020

У меня есть входящие 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 были объединены в создайте одну новую пару ключ: значение , ключом которой будет signalName, а значением будет поле значения, "IU_BATT_ParkAssist": 14.171869 вместе с другим исходным ключом, парами значений.

Как мне добиться этого в Nifi, учитывая, что поле signalName будет динамически изменяться в каждой строке?

1 Ответ

2 голосов
/ 22 февраля 2020

Try with below spec:

[
  {
    "operation": "shift",
    "spec": {
      "@(1,value)": "@(2,signalName)",
      "*": "&"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "signalName": "",
      "value": ""
    }
  }
]

In shift операция, которую мы объединяем signalName and value.

In удалить операция, которую мы удаляем signalName and value из наших json данных.

Output:

{
  "IU_BATT_ParkAssist" : 14.171869,
  "msgId" : 2268,
  "epoch" : 1582322746,
  "usec" : 376360,
  "vlan" : "-1",
  "msgName" : "EBS_Frame12",
  "vin" : "000004",
  "timestamp" : 1582322746376
}
...