涉及Mule 3.8.5中JSON有效负载的Dataweave转换中出错

涉及Mule 3.8.5中JSON有效负载的Dataweave转换中出错,json,mule,mule-component,dataweave,mule-esb,Json,Mule,Mule Component,Dataweave,Mule Esb,我在JSON负载上使用dataweave转换时出错。JSON负载是 { "requestId": "13431#1638a2abfb8", "result": [ { "batchId": 1028, "importId": "1028", "status": "Queued" } ], "success": true } 上面的有效负载由RESTful服务返

我在JSON负载上使用dataweave转换时出错。JSON负载是

{
    "requestId": "13431#1638a2abfb8",
    "result": [
        {
            "batchId": 1028,
            "importId": "1028",
            "status": "Queued"
        }
    ],
    "success": true
}
上面的有效负载由RESTful服务返回,在应用以下dataweave转换之前,我使用byteArray to object transformer将其转换为对象

%dw 1.0
%output application/json
---
batchexecution:
 {
    batchid:payload.result[0].batchid,
    status: payload.result[0].status,
    success:payload.success 
 }  when ((payload.result != null) and (sizeOf payload.result  > 0)) 
 otherwise
 {
    batchid: 0,
    status:"Not queued",
    success:false
 }
我只希望结果对象有一条记录,我需要检查数组是否为null或其大小是否大于0。我在执行转换代码时出现以下错误。我不确定这里出了什么问题

我期望转换有以下输出,但在执行转换代码时出现了错误

{
    "batchexecution": {
        "batchId": 1028,
        "status": "Queued",
        "success": true
    }
}
但是我得到以下错误,因为您无法比较::array类型的值。

Message               : Exception while executing: 
{"requestId":"64b3#1638e55058c","result":[{"batchId":1037,"importId":"1037","status":"Queued"}],"success":true}
                                         ^
You cannot compare a value of type ::array.
Payload               : {"requestId":"64b3#1638e55058c","result":[{"batchId":1037,"importId":"1037","status":"Queued"}],"success":true}
Payload Type          : java.lang.String
Element               : /marketing-dbmkt-etl-marketoFlow/processors/8 @ marketing-dbmkt-etl-marketo:marketing-dbmkt-etl-marketo.xml:69 (Transform Message)
Element XML           : <dw:transform-message doc:name="Transform Message" metadata:id="90448cfd-5884-441a-a989-e32e4877ac24">
                        <dw:input-payload mimeType="application/json" doc:sample="sample_data\batchreturnObject.dwl"></dw:input-payload>
                        <dw:set-payload>%dw 1.0%output application/json---batchexecution:{batchid:payload.result[0].batchid,status: payload.result[0].status,success:payload.success}  when ((payload.result != null) and (sizeOf payload.result  > 0))otherwise{batchid: 0,status:"Not queued",success:false}</dw:set-payload>
                        </dw:transform-message>
--------------------------------------------------------------------------------
Root Exception stack trace:
com.mulesoft.weave.mule.exception.WeaveExecutionException: Exception while executing: 
{"requestId":"64b3#1638e55058c","result":[{"batchId":1037,"importId":"1037","status":"Queued"}],"success":true}
                                         ^
You cannot compare a value of type ::array.
    at com.mulesoft.weave.mule.exception.WeaveExecutionException$.apply(WeaveExecutionException.scala:10)
    at com.mulesoft.weave.mule.WeaveMessageProcessor.execute(WeaveMessageProcessor.scala:121)
    at com.mulesoft.weave.mule.WeaveMessageProcessor.process(WeaveMessageProcessor.scala:67)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:108)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:88)
    at org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:59)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:98)
    at org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:59)
    at org.mule.interceptor.AbstractEnvelopeInterceptor.processBlocking(AbstractEnvelopeInterceptor.java:58)
    at org.mule.processor.AbstractRequestResponseMessageProcessor.process(AbstractRequestResponseMessageProcessor.java:47)
    at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:129)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:213)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:206)
    at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:16)
    at org.mule.execution.CommitTransactionInterceptor.execute(CommitTransactionInterceptor.java:35)
    at org.mule.execution.CommitTransactionInterceptor.execute(CommitTransactionInterceptor.java:22)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:30)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:14)
    at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:67)
    at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:44)
    at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:50)
    at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:40)
    at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:41)
    at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:48)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:28)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:13)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:110)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:30)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:205)
    at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:53)
    at org.mule.work.WorkerContext.run(WorkerContext.java:301)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)

********************************************************************************
消息:执行时异常:
{“requestId”:“64b3#1638e55058c”,“结果”:[{“batchId”:1037,“importId”:“1037”,“状态”:“排队”}],“成功”:true}
^
无法比较::array类型的值。
有效负载:{“requestId”:“64b3#1638e55058c”,“结果”:[{“batchId”:1037,“importId”:“1037”,“状态”:“排队”}],“成功”:true}
有效负载类型:java.lang.String
元素:/marketing dbmkt etl marketoFlow/processors/8@marketing dbmkt etl marketo:marketing dbmkt etl marketo.xml:69(转换消息)
元素XML:
%dw 1.0%输出应用程序/json---batchexecution:{batchid:payload.result[0]。batchid,状态:payload.result[0]。状态,成功:payload.success}当((payload.result!=null)和(sizeOf payload.result>0))否则{batchid:0,状态:“未排队”,成功:false}
--------------------------------------------------------------------------------
根异常堆栈跟踪:
com.mulesoft.weave.mule.exception.WeaveExecutionException:执行时发生异常:
{“requestId”:“64b3#1638e55058c”,“结果”:[{“batchId”:1037,“importId”:“1037”,“状态”:“排队”}],“成功”:true}
^
无法比较::array类型的值。
在com.mulesoft.weave.mule.exception.WeaveExecutionException$.apply(WeaveExecutionException.scala:10)
位于com.mulesoft.weave.mule.WeaveMessageProcessor.execute(WeaveMessageProcessor.scala:121)
位于com.mulesoft.weave.mule.WeaveMessageProcessor.process(WeaveMessageProcessor.scala:67)
位于org.mule.execution.exceptionMessaginExceptionExecutionInterceptor.execute(exceptionMessaginExceptionExecutionInterceptor.java:27)
位于org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:108)
位于org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
位于org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:88)
在org.mule.processor.BlockingProcessorExecutor.execute上(BlockingProcessorExecutor.java:59)
位于org.mule.execution.exceptionMessaginExceptionExecutionInterceptor.execute(exceptionMessaginExceptionExecutionInterceptor.java:27)
位于org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
位于org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:98)
在org.mule.processor.BlockingProcessorExecutor.execute上(BlockingProcessorExecutor.java:59)
位于org.mule.interceptor.AbstractEnvelopeInterceptor.processBlocking(AbstractEnvelopeInterceptor.java:58)
位于org.mule.processor.AbstractRequestResponseMessageProcessor.process(AbstractRequestResponseMessageProcessor.java:47)
在org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed上(AsyncInterceptingMessageProcessor.java:129)
位于org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessor$1.process(AsyncInterceptingMessageProcessor.java:213)
位于org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessor$1.process(AsyncInterceptingMessageProcessor.java:206)
位于org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:16)
位于org.mule.execution.CommitTransactionInterceptor.execute(CommitTransactionInterceptor.java:35)
位于org.mule.execution.CommitTransactionInterceptor.execute(CommitTransactionInterceptor.java:22)
位于org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:30)
位于org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:14)
位于org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:67)
位于org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:44)
位于org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:50)
位于org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:40)
位于org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:41)
位于org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:48)
位于org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:28)
位于org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:13)
位于org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:110)
位于org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:30)
位于org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:205)
在org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork)。
   when ((payload.result != null) and ((sizeOf payload.result)  > 0))