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

Method call: Method toObject(java.util.LinkedHashMap) cannot be found on org.springframework.integration.x.gemfire.JsonStringToObjectTransformer

我在 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} 导致了问题。

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

gemfire-json-server 接收器只能处理传入的字符串 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"}