Nifi выводит нулевые значения для EvaluateJson или AttributesToJson

Поэтому, когда я анализирую файл с помощью EvaluateJSON, JSON выглядит так:

{ "TEST_DATE": "", "T_DATE": "" }

Когда я выполняю EvaluateJSON ($ .TEST_DATE) до "test-date" для атрибутов ... я получаю:

test-date: ""

Затем, когда я выполняю AttributesToJSON (назначение содержимого потокового файла), я получаю:

{ "test-date": "", "t-date": "" }

ОДНАКО ... Я хочу, чтобы это было:

{ "test-date": null, "t-date": null }

Я перепробовал все возможные варианты. Нет другого способа, кроме опасного регулярного выражения в стиле "ReplaceText", поместить NULL в JSON.

Любой атрибут updateAttribute не может поместить в него «ноль». Я пробовал replaceEmpty (null), replaceEmpty («null») (вместо этого вставляется строка «null»). Я пробовал "replaceEmpty (literal (" null ")) не работает.

Как будто Нифи не распознает null.


person Dexter    schedule 06.02.2018    source источник
comment
кажется, вы хотите того же: stackoverflow.com/questions/48593240 /   -  person daggett    schedule 06.02.2018
comment
Да, поэтому я думаю, что мое решение - использовать собственный процессор NAR, который удаляет пустые атрибуты   -  person Dexter    schedule 07.02.2018


Ответы (1)


DExter,

Вы можете заменить двойные кавычки ("") нулевым значением в процессоре ReplaceText.

После этого вы получите значение ниже.

{ "test-date": "", "t-date": "" }

Используйте процессор ReplaceText для поиска пустых двойных кавычек и замените их на null.

search value:""
Replacement value:null

Для справки проверьте этот https://regexr.com/3kctp.

Это закончится так, как вы хотите;

{ "test-date": null, "t-date": null }

Пожалуйста, дайте мне знать, если у вас возникнут проблемы.

person Mister X    schedule 07.02.2018
comment
Я чувствовал, что это не самый лучший способ сделать это, но если мы все равно собираемся заменить все, тогда имеет смысл просто сделать это таким образом, а не обычным образом. Выполнение настраиваемого nar или скрипта может работать только для НЕКОТОРЫХ, которые необходимо заменить. - person Dexter; 07.02.2018
comment
Я делаю то же самое, что и вы, и для значений, подобных выше, с нулевым значением, на следующем шаге я использую язык выражений, например $ {ATTR_NAME: isNull ()} в процессоре UpdateAttribute. Но он не определяет значение как null, а рассматривает его как набор пустых строк. ты знаешь почему? Следовательно, атрибут всегда возвращает / устанавливает значение false, хотя значение равно нулю. Я также вижу отформатированное представление. что отсутствует или что я делаю неправильно для проверки / использования isNull () для этих замененных значений null в json? - person Ak777; 08.01.2021