mule json-to-object变换器抛出异常没有单字符串构造函数/工厂方法

时间:2015-08-27 03:12:59

标签: mule

我有一个像这样的简单流程 -

<sub-flow name="myFlow">
     <set-payload value="{&quot;p_SuccessInd&quot;:&quot;Y&quot;}" doc:name="Set Payload"/>
        <json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
        <logger message="&gt;&gt;&gt;&gt;&gt;&gt;&gt;My payload is&gt;&gt;&gt;&gt;#[payload]" level="INFO" doc:name="Logger"/>
    </sub-flow>

当我运行这个我得到一个例外 - 消息:无法从“json”转换为“java.util.HashMap” 异常堆栈是: 1.无法实例化类型的值[map type; class java.util.HashMap,[simple type,class java.lang.Object] - &gt; [简单类型,类java.lang.Object]]来自JSON String;没有单字符串构造函数/工厂方法(org.codehaus.jackson.map.JsonMappingException) org.codehaus.jackson.map.deser.std.StdValueInstantiator:379(null)

如果我在没有变压器的情况下运行它,则有效负载打印为 - {“p_SuccessInd”:“Y”}

有人可以帮助我弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:0)

由于您的JSON为{"p_SuccessInd":"Y"},因此非常期待 尝试使用<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/><json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object" />提取 p_SuccessInd 的值并将其打印在日志中...
提取后使用<json:object-to-json-transformer doc:name="Object to JSON" />将其转换回json ..
然后,您可以使用记录器打印#[message.payload],这将在日志中记录您的JSON有效负载 请查看以下参考: -

<sub-flow name="myFlow">
   <set-payload value="{&quot;p_SuccessInd&quot;:&quot;Y&quot;}" doc:name="Set Payload"/>
   <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object" />
   <logger message="Extracted Value :- #[message.payload.p_SuccessInd]" level="INFO" doc:name="Logger"/>
   <json:object-to-json-transformer doc:name="Object to JSON" />
   <logger message="My payload is :-#[message.payload]" level="INFO" doc:name="Logger"/>
 </sub-flow>