2016-09-22 92 views
0

我有在dataweave轉換信息,在騾3.7的問題。 輸入XML具有如下結構: input XMLdataweave coersion字符串數組錯誤

dataweave代碼: DAtaweave code

誤差如下: 異常堆棧是: 1.不能強迫一個:字符串到:陣列(com.mulesoft.weave .model.values.coercion.exception.UnsupportedTypeCoercionException) com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue:31(空) 2.異常而執行: header_key:payload.data.header.Key, ^ Cann OT脅迫一個:字符串到:陣列(com.mulesoft.weave.mule.exception.WeaveExecutionException) com.mulesoft.weave.mule.WeaveMessageProcessor $ WeaveOutputHandler:162(空)


根異常堆棧跟蹤: com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionException:無法將a:string強制爲:數組 at com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue.evaluate(ArrayFormatTypeCoercionValue.scala:31 ) at com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue.evaluate(ArrayFormatTypeCoercionValue.scala:13) at com.mulesoft.weave.reader.csv.CSVWriter.writeCSV(CSVWrite r.scala:70) 在com.mulesoft.weave.reader.csv.CSVWriter.writeValue(CSVWriter.scala:44) 在com.mulesoft.weave.model.values.Value $ class.write(Value.scala: 31) at com.mulesoft.weave.engine.ast.structure.ObjectNode.write(ObjectNode.scala:11) at com.mulesoft.weave.engine.Engine.internalExecute(Engine.scala:89) at com。 mulesoft.weave.engine.Engine.execute(Engine.scala:54) at com.mulesoft.weave.engine.Engine.execute(Engine.scala:169) at com.mulesoft.weave.mule.WeaveMessageProcessor $ WeaveOutputHandler。 (org.mule.transformer.simple.ObjectToByteArray.doTransform(ObjectToByteArray.java:63) at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:4) 15) 在org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:425) 在org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:373) 在org.mule.DefaultMuleMessage.getPayloadAsBytes(DefaultMuleMessage.java:714) 在org.mule.module.http.internal.listener.HttpResponseBuilder.build(HttpResponseBuilder.java:177) 在org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.sendResponseToClient(HttpMessageProcessorTemplate.java:97) 在org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:83) 在org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:38) 在org.mule.execution.PhaseExecutionEngine $ InternalPhaseExecutionEngine。 phaseSuccessfully在(PhaseExecutionEngine.java:65) 在org.mule.execution.PhaseExecutionEngine $ InternalPhaseExecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:69) 在com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:185) com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:1) 在org.mule.execution.PhaseExecutionEngine $ InternalPhaseExecutionEngine.process(PhaseExecutionEngine.java:114) 在org.mule.execution.PhaseExecutionEngine.process( PhaseExecutionEngine.java:41) 在org.mule.execution.MuleMessageProcessingManager。在org.mule.module.http.internal.listener.grizzly.GrizzlyRequestDispatcherFilter上的processMessage(MuleMessageProcessingManager.java:32) .handleRead(GrizzlyRequestDispatcherFilter.java:83) 在org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119) 在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 在org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 在org.glassfish.grizzly.filterchain。 DefaultFilterChain.process(DefaultFilterChain.java:111 ) 在org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 在org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 在org.glassfish.grizzly.strategies摘要IOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.run0(ExecutorPerServerAddressIOStrategy.java:102) at org.mule.module.http.internal.listener .grizzly.ExecutorPerServerAddressIOStrategy.access $ 100(ExecutorPerServerAddressIOStrategy.java:30) 在org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy $ WorkerThreadRunnable.run(ExecutorPerServerAddressIOStrategy.java:125) 在java.util.concurrent中。 ThreadPoolExecutor.runWorker(ThreadPoolExecuto r.java:1145) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)

任何人有任何想法代碼有什麼問題? 非常感謝!

回答

0

我唯一能看到的是map運算符期望有一個數組而payload.data.PO不存在。我知道你沒有得到一個NPE,但你能檢查這是你的錯誤嗎?

+0

謝謝乍得的投入。其實我必須添加*來強制地圖目標作爲一個數組。 – Robert