У меня есть две полезные нагрузки Json.Я хочу объединить их в один объект Json - PullRequest
1 голос
/ 12 марта 2019

У меня есть две полезные нагрузки, и я хочу объединить их в один объект JSON (потоковое соединение). В некоторых местах люди предлагают использовать AttributesToJSON, но, поскольку один из JSON не имеет фиксированного набора атрибутов, я думаю, это было бы невозможно.

Первая полезная нагрузка

{  
   "title":"API-Actions Documentation",
   "title_link":"https://api.slack.com/",
   "author_name":"name",
   "author_link":"http://flickr.com/bobby/",
   "author_icon":"http://flickr.com/icons/bobby.jpg",
   "text":"Optional",
   "image_url":"http://my-website.com/path/to/image.jpg",
   "thumb_url":"http://example.com/path/to/thumb.png",
   "footer":null,
   "pretext":"@name",
   "color":"#7CD197"
}

И второй,

{  
"fields":[  
  {  
     "title":"Priority",
     "value":"low",
     "short":"true"
  },
  {  
     "title":"Priority",
     "value":"medium",
     "short":"true"
  },
  {  
     "title":"Priority",
     "value":"high",
     "short":"true"
  },
  {  
     "title":"Priority",
     "value":"blocker",
     "short":"true"
  }
 ]
}

Я хочу вывод как

{   
"title":"API-Actions Documentation",
"title_link":"https://api.slack.com/",
"author_name":"name",
"author_link":"http://flickr.com/bobby/",
"author_icon":"http://flickr.com/icons/bobby.jpg",
"text":"Optional",
"image_url":"http://my-website.com/path/to/image.jpg",
"thumb_url":"http://example.com/path/to/thumb.png",
"footer":null,
"pretext":"@name",
"color":"#7CD197",
"fields":[  
  {  
     "title":"Priority",
     "value":"low",
     "short":"true"
  },
  {  
     "title":"Priority",
     "value":"medium",
     "short":"true"
  },
  {  
     "title":"Priority",
     "value":"high",
     "short":"true"
  },
  {  
     "title":"Priority",
     "value":"blocker",
     "short":"true"
    }
   ]
  }

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

Легко! Просто используйте MergeContent и установите следующую конфигурацию:

Merge Format: Binary Concatenation
Minimum Number of Entries: 2
Delimiter Strategy: Text
Header: [
Footer: ]
Demarcator: ,

(Вы могли бы использовать MergeRecord, но это, по крайней мере, немного глючит для меня).

Затем перейдите на JoltTrasnformJSON и установите Jolt Transformation DSL на Shift и Jolt Specification на:

{
    "*": {
      "*": "&"
    }
}

Это должно сделать работу:)

2 голосов
/ 12 марта 2019

Обычно NiFi не предназначен для выполнения традиционных потоковых соединений, но эта недавняя тема в списке рассылки может помочь объяснить, что возможно:

http://apache -nifi-users-list.2361937.n4.nabble.com / нарисуй двух наборов данных-td7039.html

...