У меня есть поток Mule, который преобразует данные CSV в XML.Есть поле, которое мне нужно отобразить и разделить по символу.Я получаю сообщение об ошибке
Cannot coerce a :array to a :object.
Вот результаты, которые мне нужно достичь:
<Dataset>
<ListingName> Name Here </ListingName>
<Description> Description Here </Description>
<Price>110,000</Price>
<SerialSet>
<Hours>1255</Hours>
<Serial>9110136</Serial>
</SerialSet>
<Dealer> Name Here </Dealer>
<DealerAddress>Continental, Ohio 45831</DealerAddress>
<Date>2018-10-24</Date>
Вот поток, который я использую:
<dw:transform-message doc:name="Transform Message">
<dw:input-payload mimeType="application/csv"/>
<dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
{
Tractor: {
(payload map ((payload01 , indexOfPayload01) -> {
Dataset: {
ListingName: payload01.ListingName,
Description: payload01.Description,
Price: payload01.Price,
SerialSet: (payload01.Serial replace /[{}]/ with "" splitBy ";") map using (data = $ splitBy ":") {
(data[0]) : data[1]
},
Dealer: payload01.DealerName,
DealerAddress: payload01.DealerAddress,
Date: now as :string {format: "yyyy-MM-dd"}
}
}))
}
}
]]></dw:set-payload>
Однако мой поток возвращает следующее:
Cannot coerce a :array to a :object.
Вот как выглядят необработанные данные, которые я пытаюсь отобразить для поля SerialSet:
<SerialSet>Hours: 3280; Serial Number: A7809001946; Condition: Used; Stock Number: 6465</SerialSet>
Должен быть узлом для каждого элемента на основе пар ключ -> значение, в этом случае он должен выглядеть следующим образом:
<SerialSet>
<Hours>3280</Hours>
<Serial Number>A7809001946</Serial Number>
<Condition>Used</Condition>
<Stock Number>6465</Stock Number>
</SerialSet>