2015-11-30 3 views
0

Я использую Mule Requester для загрузки CSV-файла. После загрузки файла полезная нагрузка представляет собой массив байтов, который я храню в переменной потока, mycsv. Я получаю исключение.Преобразование CSV в массив с использованием DataWeave

org.mule.api.MessagingException: Exception while executing: 
    NetIds: flowVars.mycsv map $."My Column Name" 
         ^
Cannot coerce a :binary to a :array (com.mulesoft.weave.mule.exception.WeaveExecutionException). Message payload is of type: byte[] 

Вот мой DataWeave код:

%dw 1.0 
%output application/java 
--- 
{ 
    Values: flowVars.mycsv map $."My Column Name" 
} 

предыдущий элемент потока является choice, поэтому я метаданные о том, что для вывода на FlowVar с правильным именем и ссылки на файл CSV образца, поэтому данные DataWeave имеют тип переменной List<Csv>.

Как я могу прочитать CSV? Благодаря!

ответ

1

Это потому, что он не знает mimeType потокаVar, потому что он не установлен. Попробуйте перед dataweave трансформатора:

<set-variable value="#[flowVars.mycsv]" variableName="mycsv" mimeType="application/csv" doc:name="Variable" /> 

или установить MIMETYPE при первом читать CSV.

+0

Это было сделано. Благодаря! –

0

Это первый раз, когда я нашел требование поместить два разных формата в один файл csv. Чтобы получить ожидаемый результат, я предпочитаю использовать этот трюк: Создайте оба выражения и объедините их в один простой массив, используя flatten . Добавить пустой объект в качестве разделителя строк.

 Смежные вопросы

  • Нет связанных вопросов^_^