Как переместить узлы в массив и ввести ключ в данный узел в Nifi? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть JSON полезная нагрузка вот так;

[
   {
      "Samples":{
         "Load":{
            "itemId":"bx",
            "timestamp":"2019-01-28T16:13:39.387640Z",
            "name":null
         },
         "Press":{
            "itemId":"by",
            "timestamp":"2019-01-28T16:13:39.387640Z",
            "name":null
         }
      }
   }
]

Я хочу получить JSON как показано ниже:

{
   "Samples":{
      "Items":[
         {
            "tag_name":"Load",
            "itemId":"bx",
            "timestamp":"2019-01-28T16:13:39.387640Z",
            "name":null
         },
         {
            "tag_name":"Press",
            "itemId":"by",
            "timestamp":"2019-01-28T16:13:39.387640Z",
            "name":null
         }
      ]
   }
}

Как я могу это сделать?Могу ли я использовать JolTransformRecord?Подходит ли эта запись для потоковой передачи в реальном времени?

1 Ответ

0 голосов
/ 23 февраля 2019

Используя очень похожую проблему из GitHub: Не могли бы вы мне помочь?Перемещая узлы вверх в массив, а ключ в узлы вы можете найти решение.Пример, который сначала копирует в массив весь объект, а затем добавляет tag_name:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Samples": {
          "*": { // keys: Load or Press
            // Left hand side "@" means grab the whole object 
            //  that was the right hand side of Load or Press.
            // Then send it to Samples.Items array.
            "@": "Samples.Items[#2]",
            "$": "Samples.Items[#2].tag_name"
          }
        }
      }
    }
  }
]
...