我在休息环境中使用骆驼,而且我必须处理一个来自request的json。就像这样:
{
'field1':'abc',
'field2':'def'
}
我要做的就是提取field1和field2并将它们放在2个属性中,所以我尝试了类似的方法
<setProperty propertyName="Field1">
<jsonpath>$.field1</jsonpath>
</setProperty>
<setProperty propertyName="Field2">
<jsonpath>$.field2</jsonpath>
</setProperty>
但是我得到这个错误:
org.apache.camel.ExpressionEvaluationException:
com.jayway.jsonpath.PathNotFoundException: Expected to find an object with property ['field2'] in path $ but found 'java.lang.String'. This is not a json object according to the JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.
经过一些测试后,我发现我的身体在第一次使用jsonpath之后是空的。
使用xpath应用于XML的相同过程不会产生任何错误,我想知道是否可以对jsonpath进行相同的操作,而不是在Java中创建一个映射器对象。预先谢谢你
答案 0 :(得分:1)
如果处理后的骆驼消息的类型为InputStream,则该流显然只能读取一次。
要解决此问题:
<convertBodyTo type="java.lang.String" charset="ISO-8859-1">
)