Pentaho JsonInput GET поля - PullRequest
       85

Pentaho JsonInput GET поля

0 голосов
/ 05 февраля 2020

Я пытаюсь использовать PDI для чтения данных из API (json), и теперь я просто пытаюсь использовать json ввод, чтобы получить несколько определенных c полей, но кнопку get fields на шаг ввода дает мне.

ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : Index 1 out of bounds for length 1

enter image description here

все шаги выполняются нормально, и производят данные - только не шаг ввода json не хочу дать мне вариант поля! - Я устал от текстового файла и json oput, и оба пишут действительные json, так что IDK, что происходит ....

PS. это мой первый раз, когда я использую PDI

ВЫПУСК 2:

Похоже, что PDI использует jayway для своего json анализа пути, поэтому я использую этот сайт https://jsonpath.herokuapp.com/ выбор пути, который дает мне ожидаемый путь. Когда я помещаю это в 'поля' диалогового окна ввода json, я получаю только ПЕРВЫЙ экземпляр этого значения пути, тогда как он фактически анализирует json и дает мне каждый экземпляр, и не могу понять, почему, хотя я предполагаю он имеет какое-то отношение к основанному на строках представлению PDI, но я также не знаю, как заставить его понять, что это json, и он должен возвращать мне все значения, соответствующие этому пути.

enter image description here

ОБНОВЛЕНИЕ 1: Я смотрел на это https://forums.pentaho.com/threads/135882-Parsing-JSON-data-without-knowing-field-names/ кажется, что это изменено Java Значение скрипта шаг может быть путь к go. Продолжит тестирование.

ОБНОВЛЕНИЕ 2

OK - Использовал MJSV, как указано выше, вместе с шагом выбора полей и, наконец, смог получить ключ

var obj = JSON.parse(mydata);
var keys = Object.keys(obj);
for (var i = 0; i < Object.keys(obj).length; i++) {
    var row = createRowCopy(getOutputRowMeta().size());
    var idx = getInputRowMeta().size();
    row[idx++] = keys[i];
    putRow(row);
}
trans_Status = SKIP_TRANSFORMATION;
...