2014-02-12 58 views
0

我尝试在骆驼中使用restlet。该请求应该是一个JSON。但不要如何将JSON转换为java对象。这里是代码示例:camel restlet Json整合问题

客户端请求:

$.ajax({ 
    url: '${pageContext.request.contextPath}/rs/search?restletMethod=POST', 
type: "POST", 
data: $('#searchRequest').serializeArray(), 
contentType: "application/json;charset=utf-8", 
dataType: "html", 
success: function (result) 
{ 
$("#result #queryId").text(result); 
}, 
error: function (xhr, ajaxOptions, thrownError) { 
alert(xhr.status); 
alert(thrownError.Message); 
} 
}); 

RouterBuilder:

from("restlet:/search?restletMethod=POST").unmarshal("gson") 
    .to("bean:restletHandler"); 

camelcontext.xml

<bean id="gson" class="org.apache.camel.component.gson.GsonDataFormat">  
    <property name="unmarshalType" value="domain.SearchRequest"/> 
</bean> 

我一直得到以下情况除外:

C om.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT但STRING在第1分1列

Exchange中的身体是org.restlet.engine.io.UnclosableInputStream 的类型是这样的:

性别=女& _sex =上&性别=男性& _sex =上& _sex =上& _race =上&种族=黑色& _race =上&种族=印度& _race =上& _race =上& _race =上&性别= &药物= 2345 & _medication =上& _medication =上& _medication =上& _medication =上& _medication =上& _diagnosis =上&诊断= 410.90 & _diagnosis =上& _diagnosis =上& _diagnosis =在& _diagnosis =上&描述= sdfdsfQuery RequestcloseID描述请求创建日期所有者状态完成日期计数

身体流并不像JSON,所以gson不知道如何将其转换为对象。 任何帮助将真正感激!

感谢,

回答

0

使用JSON.parse()来和内容类型必须设置为application/JSON

+0

感谢您的答复!当我传递数据为:{“demographics.sex”:[“female”,“male”,“unknown”],“demographics.race”:“indian”,“medications.includeCodes”:[“2345”,“ 4567“],”medications.excludeCodes“:”4567“,”diagnostic.includeCodes“:[”250.00“,”410.90“,”401.9“],”description“:”cxzcxzc“,”gender“:”“} 在“gson”之后创建的对象缺少字符串数组: –