2016-03-17 5 views
3

Я хочу использовать встроенный процессор Apache NiFi «SplitJson» для разделения массива JSON. Я делал это раньше, и он работает отлично, но теперь я не могу найти правильное выражение json path для разделения моего json. JSON я получаю просто из GitHub:Apache NiFi Split JSON корневой массив

https://api.github.com/events

Я хочу, чтобы каждое событие в отдельном flowfile. В описании процессора указано:

Выражение JsonPath, которое указывает, что элемент массива разбивается на JSON/скалярные фрагменты.

Так как это корневой массив, который я хочу разбить, я пытаюсь использовать $ или @, но это не сработает. В равной степени * или [*] или другие вещи, которые, я думаю, не так, как $.[*] и т.д. не работают. В некоторых случаях он просто ничего не разделяет, в других случаях он дает ошибку, просто говоря, что он не может найти массив.

Заранее благодарим за любые предложения или помощь!

ответ

5

Я считаю, что все, что вам нужно сделать, - это путь JSON от $.*. Это должно разбить массив на FlowFile для каждого элемента.

Чтобы продемонстрировать, я создал и загрузил шаблон здесь [1]. Он использует JSON с использованием GetHTTP, разделяет его с помощью SplitJSON и заканчивается на LogAttribute (для целей тестирования). Обратите внимание, что я считаю, что GitHub требует, чтобы вы использовали https (начальное тестирование не удавалось с использованием http), поэтому вам нужно настроить SSL-контекст с хранилищем ключей.

[1] https://gist.github.com/JPercivall/e1b5ba00a45c464fd764

+0

Это на самом деле до сих пор не работает для меня .. но это своего рода странно, когда он читает JSON кажется, что-то меняется с ним. Например, текстовые редакторы или мое приложение Google Chrome не будут форматировать JSON правильно. Поэтому мне интересно, не может ли он просто прочитать JSON или что-то в этом роде. Очень странно. – Matthias

+0

Когда вы говорите: «... Google Chrome не форматирует JSON должным образом», вы говорите, что когда вы пытаетесь открыть [link] (https://api.github.com/events), хром не работает должным образом форматировать веб-страницу или вы выводите результат SplitText в файл, и хром не будет правильно отображать его? – JDP10101

+1

Второй, но при этом он работает, и я думал, что json не был правильно разделен, потому что я не получал разделенные файлы потоков, но ошибка была в следующем процессоре ... Мой плохой! Но сейчас я использую «$», и это работает. – Matthias