我有一个像这样的简单流程 -
<sub-flow name="myFlow">
<set-payload value="{"p_SuccessInd":"Y"}" doc:name="Set Payload"/>
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
<logger message=">>>>>>>My payload is>>>>#[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”}
有人可以帮助我弄清楚我做错了什么。
答案 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="{"p_SuccessInd":"Y"}" 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>