Работа с полями tExtractJSONFields в Talend - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь извлечь поля из файла Json с помощью talend.Я могу зациклить внутри массива моего файла, но другие поля имеют нулевые значения.

{
  "codeObjetStart": "KVIOPEFL",
  "codeRetour": "00",
  "libelleCodeErreur": "Traitement effectué sans erreur.",
  "resultatSdt": [
    {
      "KVIOPEFL": "0",
      "NMLIBFRA": "OPERATION SANS EFFET DE LEVIER",
      "NMLIBANG": "OPERATION WITHOUT LEVERAGE"
    },
    {
      "KVIOPEFL": "1",
      "NMLIBFRA": "LBO",
      "NMLIBANG": "LBO"
    },
    {
      "KVIOPEFL": "2",
      "NMLIBFRA": "FSA",
      "NMLIBANG": "SAF"
    },
    {
      "KVIOPEFL": "3",
      "NMLIBFRA": "CEL",
      "NMLIBANG": "CEL"
    }
  ],
  "versionObjetStart": "0"
}

Моя работа очень проста, я хочу просто показать в консоли.

enter image description here

Конфигурация моих компонентов:

enter image description here

enter image description here

enter image description here

1 Ответ

0 голосов
/ 31 января 2019

С вашим подходом есть 2 проблемы.
Во-первых, tExtractJSONFields не поддерживает передачу полей (codeObjetStart, codeRetour, libelleCodeErreur, versionObjetStart).Если бы он это поддерживал, вам не пришлось бы устанавливать выражение jsonpath для каждого из этих полей, потому что вы уже прочитали их в своем tFileInputJSON.Это подводит нас ко второй проблеме, заключающейся в том, что jsonpath не поддерживает родительский оператор, согласно его документации .

. Что вы можете сделать, так это прочитать свой файл, используя компонент, который может вернутьэто в одну строчку.Например, tFileInputDelimited только с одним столбцом и разделителем строк и разделителем полей, которых нет в вашем файле.

Затем вы можете использовать tExtractJSONFields с XPath для разбора полей, установивЗапрос цикла XPath для возврата потомков resultatSdt.

Примерно так: enter image description here

Я использую tFixedFlowInput со встроенным содержимым для удобства.
Ирезультат:

.--------------+----------+--------------------------------+-----------------+--------+------------------------------+--------------------------.
|                                                                   tLogRow_3                                                                   |
|=-------------+----------+--------------------------------+-----------------+--------+------------------------------+-------------------------=|
|codeObjetStart|codeRetour|libelleCodeErreur               |versionObjetStart|KVIOPEFL|NMLIBFRA                      |NMLIBANG                  |
|=-------------+----------+--------------------------------+-----------------+--------+------------------------------+-------------------------=|
|KVIOPEFL      |00        |Traitement effectué sans erreur.|0                |0       |OPERATION SANS EFFET DE LEVIER|OPERATION WITHOUT LEVERAGE|
|KVIOPEFL      |00        |Traitement effectué sans erreur.|0                |1       |LBO                           |LBO                       |
|KVIOPEFL      |00        |Traitement effectué sans erreur.|0                |2       |FSA                           |SAF                       |
|KVIOPEFL      |00        |Traitement effectué sans erreur.|0                |3       |CEL                           |CEL                       |
'--------------+----------+--------------------------------+-----------------+--------+------------------------------+--------------------------'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...