Преобразование Толчка для извлечения данных из вложенного списка - PullRequest
0 голосов
/ 04 февраля 2019

Что такое Jolt Spec для извлечения данных из вложенного списка

Я экспериментировал с apache nifi, я хочу использовать процессор joltransformation для синтаксического анализа содержимого файла потока json, но я не могу разобрать вложенный список

Входной JSON -

{
"posts": [
 {
   "network": "test",
   "photos": [
     {
       "a": 1.7722222222222221,
       "s": "https://a.com",
       "m": "https://b.com",
       "l": "https://ccccc.com"
     }
   ]
 },
 {
   "network": "test1",
   "photos": [
     {
       "a": 1.7722222222222221,
       "s": "https://d.com",
       "m": "https://e.com",
       "l": "https://fffff.com"
     }
   ]
 }
]
}

Файл преобразования JOLT -

[
{
 "operation": "shift",
 "spec": {
   "posts": {
     "*": {
       "network": "[&1].profile",
       "photos": { "0": { "l": "[&1].p" } }
     }
   }
 }
}
]

Ожидаемый вывод -

[ 
 {
 "profile" : "test",
 "p" : "https://ccccc.com"
 }, 
 {
 "profile" : "test1",
 "p" : "https://fffff.com"
 }
]

Фактический вывод -

[ 
 {
 "profile" : "test",
 "p" : [ "https://ccccc.com", "https://ffffff.com" ]
 }, 
 {
 "profile" : "test1"
 }
]

Пожалуйста, помогите мне, я не могу понять, что я делаю неправильно

1 Ответ

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

Вы были близки

[
  {
    "operation": "shift",
    "spec": {
      "posts": {
        "*": {
          "network": "[&1].profile",
          "photos": { 
            "0": { 
              "l": "[&3].p" 
             } 
           }
        }
      }
    }
  }
]

Важной частью является [&3].p, поскольку это означает, что индекс используется с 3 уровней, то есть с постов.

...