方法调用:无法在org.springframework.integration.x.gemfire.JsonStringToObjectTransformer上找到方法toObject(java.util.LinkedHashMap)

时间:2017-06-13 17:41:25

标签: spring-xd gemfire

我在Spring XD和gemfire中面临以下问题

nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 8): Method call: Method toObject(java.util.LinkedHashMap) cannot be found on org.springframework.integration.x.gemfire.JsonStringToObjectTransformer type.

知道如何解决这个问题吗?

以下是我们如何复制此问题:

stream create json_test --definition "trigger --fixedDelay=1 | 
transform --expression='''{node1 : {node2 : {data1:hello, data2: world}}}''' | 
splitter --expression=#jsonPath(payload,'$.node1.node2') | 
log" --deploy`

我们期待{data1:hello, data2:world}但我们得到{data1=hello, data2=world}导致问题。

这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

gemfire-json-server接收器只能处理传入的String JSON有效负载;它看起来像是以某种方式提供LinkedHashMap

这可能意味着您已经通过一些JSON运行它来进行对象转换或转换。

修改

拆分器生成LinkedHashMap - 指定outputType将其转换为JSON ...

xd:>stream create json_test --definition "trigger --fixedDelay=1 | 
transform --expression='''{node1 : {node2 : {data1:hello, data2: world}}}''' | 
splitter --expression=#jsonPath(payload,'$.node1.node2') --outputType=application/json |
log" --deploy

结果...

2017-06-14T09:52:10-0400 1.3.1.RELEASE INFO task-scheduler-2 sink.json_test - {"data1":"hello","data2":"world"}
2017-06-14T09:52:11-0400 1.3.1.RELEASE INFO task-scheduler-2 sink.json_test - {"data1":"hello","data2":"world"}
2017-06-14T09:52:12-0400 1.3.1.RELEASE INFO task-scheduler-2 sink.json_test - {"data1":"hello","data2":"world"}