2017-06-13 59 views
0

我面对春季XD了以下问题和的GemFire方法调用:方法toObject(java.util.LinkedHashMap中)不能对org.springframework.integration.x.gemfire.JsonStringToObjectTransformer

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

您可以编辑的问题显示完整的堆栈跟踪以及您的流定义? –

回答

1

gemfire-json-server sink只能处理传入的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"} 
+0

感谢您的回答,您能否看到我在问题中添加的示例流。请提出解决方案。 – Unnikrishnan

+0

查看我的编辑 - 您需要将'#jsonPath'输出转换回JSON。 –

+0

非常感谢,现在它工作正常。 – Unnikrishnan