JoltTransformJSON - извлечь атрибут, удалив его - PullRequest
2 голосов
/ 16 июня 2019

Во-первых, я новичок в nifi, так что смело меняйте все, что видите.

Я использую JoltTransformJSON. Мой входной JSON следующий:

{
"ID": "123",
"Text1": "aaa",
"Text2": "aaa",
"Text3": "aaa"
}

И мне нужен следующий вывод:

{
"data": {
    "ID": "123",
    "Text1": "aaa",
    "Text2": "aaa",
    "Text3": "aaa"
},
"date": "",
"dataset": "",
"ID": "123"
}

Дата и набор данных являются атрибутами из потока, поэтому здесь нет проблем, проблема в том, что мне нужно извлечь значение ID, в данном случае 123, но это всего лишь пример, без удаления Идентификатор внутри полевых данных . Моя спецификация толчка следующая:

[{
"operation": "shift",
"spec": {
    "*": "data.&"
}
},{
"operation": "default",
"spec": {
    "dataset": "${dataset:toLower()}",
    "date": "${date}"
}
}]

и с этим у меня все кроме поля идентификатора, что я не знаю, как это сделать: (.

Thankss

1 Ответ

1 голос
/ 17 июня 2019

Попробуйте с нижеуказанной спецификацией:

[{
  "operation": "shift",
  "spec": {
    "*": "data.&",
    "ID": ["ID", "data.ID"]
  }
}, {
  "operation": "default",
  "spec": {
    "dataset": "${dataset:toLower()}",
    "date": "${date}"
  }
}]

Выход:

{
  "ID" : "123",
  "data" : {
    "ID" : "123",
    "Text1" : "aaa",
    "Text2" : "aaa",
    "Text3" : "aaa"
  },
  "date" : "${date}",
  "dataset" : "${dataset:toLower()}"
}
...