Прочитать несколько JSON из одного ответа службы REST и поместить в таблицу базы данных - Talend - PullRequest
0 голосов
/ 10 июня 2018

enter image description here Я много искал, но не нашел точного решения.У меня есть служба REST, в ответ на которую я получаю строки и каждую строку в JSON, как указано ниже:

{"event":"click1","properties":{ "time":"2 dec 2018","clicks":29,"parent":"jbar","isLast":"NO"}}
{"event":"click2","properties":{ "time":"2 dec 2018","clicks":35,"parent":"jbar3","isLast":"NO"}}
{"event":"click3","properties":{ "time":"2 dec 2018","clicks":10,"parent":"jbar2","isLast":"NO"}}
{"event":"click4","properties":{ "time":"2 dec 2018","clicks":9,"parent":"jbar1","isLast":"YES"}}

Каждая строка представляет собой JSON (все они похожи друг на друга).У меня есть таблица базы данных, имеющая все эти поля в виде столбцов.Я хотел пройтись по ним и загрузить все данные в Talend.Я попробовал следующее:

tRestClient--tNormalize--tExtractJsonFields--tOracleOutput

и предоставил критерии цикла и сопоставление в компоненте tExtractJsonFields, но он не работает и выдает ошибку, говоря: " json не может быть пустым или пустым enter image description here "Нужна помощь в этом.

Ответы [ 2 ]

0 голосов
/ 20 июня 2018

Можете ли вы попробовать это:

В ваших tExtractJsonFields настройте свойство readBy на JsonPath без цикла

0 голосов
/ 13 июня 2018

Поскольку ваш веб-сервис возвращает несколько объектов json в ответе, это не действительный json, а скорее документ json.
Вам нужно разбить его на отдельные объекты json.
Вы можете добавить tNormalize между tRESTClient и tExtractJsonFields и нормализуйте документ json по символу "\ n".
Ошибка "json can not be null or empty" связана с ошибкой в ​​ваших запросах Jsonpath.Вы должны установить запрос цикла равным "$" и ссылаться на свойства json, используя "event", "properties.time"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...