Json 将请求有效负载映射到变量会在Mule不可用时引发异常

Json 将请求有效负载映射到变量会在Mule不可用时引发异常,json,mule,runtime-error,mule-component,Json,Mule,Runtime Error,Mule Component,在使用MULE时,我将从HTTP请求接收的有效负载转换为json对象,并将其映射到变量。在这种情况下,当我没有传递其中一个变量时,在计算表达式时会出现异常 <flow name="test"> <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> <json:json-to-object-transformer returnClass="

在使用MULE时,我将从HTTP请求接收的有效负载转换为json对象,并将其映射到变量。在这种情况下,当我没有传递其中一个变量时,在计算表达式时会出现异常

 <flow name="test">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
    <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
    <set-variable variableName="a"              value="#[message.payload.a]"
    <set-variable variableName="b"              value="#[message.payload.b]"
    <logger message="a:  #[a]" level="INFO" doc:name="Logger"></logger>
</flow>
应用程序运行良好

但是如果有效载荷是

{
    "a": "val1",
    "b": "val2"
}
{
   "b": "val2"
}
我得到以下例外情况:

 ERROR [].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy:
********************************************************************************
Message               : Execution of the expression "a" failed. (org.mule.api.expression.ExpressionRuntimeException).
Payload               : {b="val2"}
Payload Type          : java.util.LinkedHashMap
Element               : /test/processors/10 @ test:test.xml:47 (Logger)
Element XML           : <logger message="a:  #[a]" level="INFO" doc:name="Logger"></logger>
--------------------------------------------------------------------------------
Root Exception stack trace:
[Error: unresolvable property or identifier: a]
[Near : {... a ....}]
ERROR[].HTTP\u Listener\u Configuration.worker.01]org.mule.exception.defaultMessaginExceptionStrategy:
********************************************************************************
消息:表达式“a”的执行失败。(org.mule.api.expression.ExpressionRuntimeException)。
有效负载:{b=“val2”}
有效负载类型:java.util.LinkedHashMap
元素:/test/processors/10@test:test.xml:47(记录器)
元素XML:
--------------------------------------------------------------------------------
根异常堆栈跟踪:
[错误:无法解析的属性或标识符:a]
[近:{……a……}]
我是否可以检查变量
'a'
的值并将其附加为
NULL


另外,我想使用这个变量作为其他http请求的有效负载中的参数之一进行发送

使用
#[flowVars.a]
而不是
#[a]
将导致
null
而不是异常。

您的实现有问题。在http侦听器之后,负载是一个原始响应(JSON),它无论如何都不能被#[payload.a]或#[payload['a']访问。您应该向对象添加一个json(将json转换为映射)。从这里,您可以像这样引用它#[payload['a']]或#[payload.a]