Nifi конвертировать JSON в пользовательский JSON, используя скрипт JOLT - PullRequest
0 голосов
/ 30 октября 2018

У меня есть JSON, как

{
  "error_message_1": "missing_field_1",
  "error_message_2": "missing_field_2",
  "error_message_3": "missing_field_3"
}
Я хочу, чтобы JSON был сформирован как показано ниже

{
"payloads":[
{
   "error_message_1": "missing_field_1",
   "error_message_2": "missing_field_2"
   "error_message_3": "missing_field_3"
}],
"timestamp":"$timestmap",
"source":"nifi"
}
   
   

пожалуйста, дайте мне знать сценарий толчка для этого.

1 Ответ

0 голосов
/ 30 октября 2018

Используйте это Толчок Спецификация:

мы создаем полезных нагрузок array и сохраняем все error_message* ключей в массиве полезных нагрузок.

[{
    "operation": "shift",
    "spec": {
        "error_message_1": "payloads[0].error_message_1",
        "error_message_2": "payloads[0].error_message_2",
        "error_message_3": "payloads[0].error_message_3"
    }
}, {
    "operation": "default",
    "spec": {
      "timestamp":"$timestmap",
        "source":"nifi"
    }
}]

Выход:

enter image description here

Кроме того, если вы хотите значение timestamp для клавиши timestamp , используйте следующую спецификацию:

[{
    "operation": "shift",
    "spec": {
        "error_message_1": "payloads[0].error_message_1",
        "error_message_2": "payloads[0].error_message_2",
        "error_message_3": "payloads[0].error_message_3"
    }
}, {
    "operation": "default",
    "spec": {
      "timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS')}",
        "source":"nifi"
    }
}]

Выход:

{
    "payloads": [{
        "error_message_1": "missing_field_1",
        "error_message_2": "missing_field_2",
        "error_message_3": "missing_field_3"
    }],
    "source": "nifi",
    "timestamp": "2018-10-30 08:51:16.572"
}
...