2017-06-13 54 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