Чтение CSV без заголовков в DataWeave 2.0

Как вы анализируете CSV без заголовка в DataWeave 2.0?

У меня есть следующий CSV-файл:

Chris,Doe,Student
Bob,Smith,Teacher

и я пытаюсь просто преобразовать его в JSON следующим образом:

[
  [ "Chris", "Doe", "Student" ],
  [ "Bob", "Smith", "Teacher" ]
]

или даже это:

[
  {"0": "Chris", "1": "Doe", "2": "Student" },
  {"0": "Bob", "1": "Smith", "2": "Teacher" }
]

Вот мой DataWeave:

%dw 2.0
input payload application/csv header=false
output application/json
---
payload

Но это полезная нагрузка, возвращаемая сценарием DW:

[
  {
    "Chris": "Bob",
    "Doe": "Smith",
    "Student": "Teacher"
  }
]

Я пробовал возиться с метаданными, указав тип метаданных CSV, который включает / исключает заголовки, но не повезло.


person jerney    schedule 03.09.2019    source источник


Ответы (2)


Это не работает во время выполнения, потому что директива ввода не работает в свойствах считывателя мулов, которые необходимо настроить для источника значения. Перейдите к источнику вашего значения (файл: чтение, http: прослушиватель и т. Д.), Нажмите MimeType, выберите приложение / csv и под ним находятся свойства mimeType. Там перейдите и выберите заголовок | ложь

person machaval    schedule 03.09.2019
comment
Спасибо. Разве я не могу сделать это условно? Например, предположим, что некоторые файлы, поступающие из file: read, имеют заголовок, а другие - нет. Я могу программно проверить, существует ли заголовок, но, похоже, я даже не мог сделать что-то вроде использования маршрутизатора выбора, где одна ветка анализирует с заголовком, а другая - без него. Это правда? - person jerney; 04.09.2019

Сценарий, который вы там опубликовали, мне подходит. Немного изменил и прилагаю скриншот ниже.

введите здесь описание изображения

person Salim Khan    schedule 03.09.2019
comment
Вы делаете это на отдельной игровой площадке или в Studio (какая версия студии и среда выполнения)? - person Salim Khan; 03.09.2019
comment
Чтобы воспроизвести то, что вы видите, я удалил директиву ввода и получил только вторую строку вывода (аналогично тому, как ведет себя Studio). Чтобы заставить его работать, вам нужно будет явно настроить источник, как указано Мариано в ответе ниже. - person Salim Khan; 04.09.2019