我尝试在骆驼中使用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不知道如何将其转换为对象。 任何帮助将真正感激!
感谢,
感谢您的答复!当我传递数据为:{“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”之后创建的对象缺少字符串数组: –