简体   繁体   English

dataweave强制字符串到数组错误

[英]dataweave coersion string to array error

I am having issue in transforming message in dataweave, in mule 3.7. 我在m子3.7中的dataweave中转换消息时遇到问题。 input XML has structure as below: input XML 输入XML具有以下结构: 输入XML

dataweave code: DAtaweave code dataweave代码: DAtaweave代码

error as below: Exception stack is: 1. Cannot coerce a :string to a :array (com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionException) com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue:31 (null) 2. Exception while executing: header_key : payload.data.header.Key, ^ Cannot coerce a :string to a :array (com.mulesoft.weave.mule.exception.WeaveExecutionException) com.mulesoft.weave.mule.WeaveMessageProcessor$WeaveOutputHandler:162 (null) 错误如下:异常堆栈为:1.无法将:string强制转换为:array(com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionException)com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue: 31(空)2.执行时发生异常:header_key:payload.data.header.Key,^无法将:string强制转换为:array(com.mulesoft.weave.mule.exception.WeaveExecutionException)com.mulesoft.weave.mule .WeaveMessageProcessor $ WeaveOutputHandler:162(空)


Root Exception stack trace: com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionException: Cannot coerce a :string to a :array 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(CSVWriter.scala:70) at com.mulesoft.weave.reader.csv.CSVWriter.writeValue(CSVWriter.scala:44) at 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.write(WeaveMessageProcessor.scala:159) at org.mul 根异常堆栈跟踪:com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionException:无法将:string强制转换为com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue.evaluate(ArrayFormatTypeCoercionValue.scala :com.mulesoft.weave.model.values.formatting.ArrayFormatTypeCoercionValue.evaluate(ArrayFormatTypeCoercionValue.scala:13)处com.mulesoft.weave.reader.csv.CSVWriter.writeCSV(CSVWriter.scala:70)处。位于com.mulesoft.weave.model.values.Value $ class.write(Value.scala:31)的mulesoft.weave.reader.csv.CSVWriter.writeValue(CSVWriter.scala:44)。 com.mulesoft.weave.engine.Engine.Engine.Engine.internalExecute(Engine.scala:89)处的ast.structure.ObjectNode.write(ObjectNode.scala:11)在com.mulesoft.weave.engine.Engine.execute(Engine.scala: 54)com.mulesoft.weave.engine.Engine.execute(Engine.scala:169)com.mulesoft.weave.mule.WeaveMessageProcessor $ WeaveOutputHandler.write(WeaveMessageProcessor.scala:159)在org.mul e.transformer.simple.ObjectToByteArray.doTransform(ObjectToByteArray.java:63) at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:415) at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:425) at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:373) at org.mule.DefaultMuleMessage.getPayloadAsBytes(DefaultMuleMessage.java:714) at org.mule.module.http.internal.listener.HttpResponseBuilder.build(HttpResponseBuilder.java:177) at org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.sendResponseToClient(HttpMessageProcessorTemplate.java:97) at org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:83) at org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:38) at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:65) at org.mule.execution.PhaseExecutionEngine$InternalPhaseEx org上的org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:415)的org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:425)的e.transformer.simple.ObjectToByteArray.doTransform(ObjectToByteArray.java:63) org.mule的.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:373)org.mule.module.http.internal.listener.HttpResponseBuilder.build(HttpResponseBuilder.java:177处的DefaultMuleMessage.getPayloadAsBytes(DefaultMuleMessage.java:714) )的org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhasesjava.83)的org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.sendResponseToClient(HttpMessageProcessorTemplate.java:97)处。 org.mule.execution.PhaseExecutionEngine $ InternalPhaseExecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:65)的org.mule.execution.PhaseExecutionEngine $ InternalPhaseEx的runPhase(AsyncResponseFlowProcessingPhase.java:38) ecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:69) at com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:185) at com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:1) at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.process(PhaseExecutionEngine.java:114) at org.mule.execution.PhaseExecutionEngine.process(PhaseExecutionEngine.java:41) at org.mule.execution.MuleMessageProcessingManager.processMessage(MuleMessageProcessingManager.java:32) at org.mule.module.http.internal.listener.DefaultHttpListener$1.handleRequest(DefaultHttpListener.java:126) at org.mule.module.http.internal.listener.grizzly.GrizzlyRequestDispatcherFilter.handleRead(GrizzlyRequestDispatcherFilter.java:83) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilt 位于com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:185)处的com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:1)处的ecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:69) org.mule.execution.MuleMessageProcessingManager.java.Message(Mule.execution.PhaseExecutionEngine $ InternalPhaseExecutionEngine.process(PhaseExecutionEngine.java:114)位于org.mule.execution.PhaseExecutionEngine.process(PhaseExecutionEngine.java:41) )org.mule.module.http.internal.listener.DefaultHttpListener $ 1.handleRequest(DefaultHttpListener.java:126)org.mule.module.http.internal.listener.grizzly.GrizzlyRequestDispatcherFilter.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.DefaultFilt erChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.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) at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy$WorkerThreadRunnable.run(ExecutorPerServerAddressIOStrategy.java:125) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool org的org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)的erChain.executeChainPart(DefaultFilterChain.java:200)org的org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)的.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)在org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategyy .java:112),位于org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.access $ 100(.org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.run0(ExecutorPerServerAddressIOStrategy.java:102)。 org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy $ WorkerThreadRunnable.run(ExecutorPerServerAddressIOStrategy.java:125)上的ExecutorPerServerAddressIOStrategy.java:30),位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool Executor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Executor.java:1145),位于java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615),位于java.lang.Thread.run(Thread.java:745)

Anyone has any idea what issue with the code? 任何人都知道代码有什么问题吗? thanks a lot! 非常感谢!

The only thing I can see is the map operator expects an array and payload.data.PO doesn't exist. 我唯一能看到的是map运算符期望一个数组, payload.data.PO不存在。 I know you are not getting a NPE, but can you check if that is your error? 我知道您没有获得NPE,但是您可以检查这是否是您的错误吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM