2016-09-22 33 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