Apache Nifi 1.7.1 выравнивает Json с разделителем - PullRequest
0 голосов
/ 22 октября 2018

Я использую процессор Flatten Json с разделителем _, он работает нормально до такой степени, что сглаживает вложенные записи.Но я также заметил, что это мешает ключам, в которых уже есть «_».Например,

{
"first_name": "myfirstname",
"last_name":  "mylastname",
"address": {
            "billing": "mybilling",
            "shipping": "myshipping"
           }
}

сведено к:

{
"[\"first_name\"]": "myfirstname",
"[\"last_name\"]":  "mylastname",
"address_billing": "mybilling",
"address_shipping": "myshipping"
 }

, в то время как запись 'address' сглаживается, как и ожидалось, клавиши first_name и last_name, имеющие _ характер также нарушен.Есть ли способ, которым я могу обойти это?(возможно, способ избежать не тип записи?)

Ответы [ 2 ]

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

Чтобы обойти эту проблему, вы можете использовать

  • JoltTransformJson процессор

    (или)

  • Сохраните разделитель (например, '|', '-' .. и т. Д.) в FlattenJson , который not present in key имен.

1.Использование процессора JoltTransformJson:

Спецификация:

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "address": {
        "*": "address_&"
      }
    }
  }
]

Выход:

{
  "first_name" : "myfirstname",
  "last_name" : "mylastname",
  "address_billing" : "mybilling",
  "address_shipping" : "myshipping"
}

2.FlattenJson Процессор:

enter image description here

Выход:

{
    "first_name": "myfirstname",
    "last_name": "mylastname",
    "address|billing": "mybilling",
    "address|shipping": "myshipping"
}
0 голосов
/ 22 октября 2018

NiFi 1.7.1 использует внешнюю библиотеку под названием json-flattener в версии 0.5.0.В настоящее время безусловно проверяет наличие зарезервированных символов и заменяет их на форму, которую вы видите.Причина этого заключается в том, что документ может быть однозначно разархивирован снова.

Существует запрос на извлечение , в котором реализована опция отключения этой функции, но она не была объединена с июля 2017 г..

Короче говоря: вы ничего не можете сделать в самом NiFi, чтобы обойти это в данный момент.

...