Нифи - Как вставить весь контент XML в атрибут JSON - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь вставить все содержимое строки XML-файла в атрибут JSON (я новичок).

Я делаю это таким образом (скажите, есть ли более простой способэто хорошо сейчас):

enter image description here

Я настроил Извлечь текст таким образом:

enter image description here

И чтобы закончить, я настраиваю Replace Text, давая формат JSON:

enter image description here

Но он, похоже, неверный результат(не работает как обычный файл JSON, например, если я пытаюсь сделать httpPost):

enter image description here

Как я могу решить эту проблему?

ура

1 Ответ

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

Если вас беспокоит вопрос new lines и json key/values, используйте функции языка выражений NiFi для извлеченного атрибута (data).

ReplaceText Configs:

enter image description here Значение замены:

{"name" : "user1","time" : "${now()}","data" : "${data:replaceAll('\s',''):escapeJson()}"}

Использование escapeJson и replaceAll *Функция 1023 * для замены всех пробелов, новых строк с '' Стратегия замены как Always Replace

(или)

Другой способ подготовки сообщения json - использование Атрибуты ToJson процессор.если мы используем этот процессор, то нам нужно подготовить атрибуты / значения перед процессором AttributesToJson, используя UpdateAttribute процессор

Flow :

1.SplitXml
2.ExtractText //add data property to extract content to flowfile attribute
3.UpdateAttribute //add name property -> user1 
                    add time property -> ${now()} 
                    add data property -> ${data:replaceAll('\s',''):escapeJson()}}
4.AttributeToJson //Attributes List -> name,time,data
                    Destination     -> flowfile content
                    include core attributes -> false
...