我正在尝试使用RESTful和JSON的Web服务。
这是我的POST方法:
@POST
public Response setCustomerInvoiceNotifications(SetCustomerInvoiceNotificationsRequestBO requestBO, @Context HttpHeaders hh) throws JSONException, Exception {
init(config);
Response response = null;
ResultBO resultBO = (ResultBO) roalCache.callService("setCustomerInvoiceNotifications", requestBO, true);
if (resultBO != null) {
if (resultBO.getResult() != null) {
SetCustomerInvoiceNotificationsResponseBO responseBO = (SetCustomerInvoiceNotificationsResponseBO)resultBO.getResult();
ObjectFactory factory = new ObjectFactory();
JSONObject jsonObject = new JSONObject(responseBO);
String result = "@Produces(\"application/json\") Output: \n\n Output: \n\n" + jsonObject;
response = Response.status(200).cookie(cookie).entity(result).build();
} else if (resultBO.getCause() != null) {
JSONObject jsonObject = new JSONObject(resultBO.getCause());
logger.debug("[{}] jsonObject.toString = ", jsonObject.toString() );
String result = "@Produces(\"application/json\") Output: \n\n Output: \n\n" + jsonObject;
logger.debug("[{}] jsonObject result = ", result );
response = Response.status(500).cookie(cookie).entity(result).build();
}
}
return response;
}
我正在使用带数组的JSON:
[{
"correlationId": "12345432",
"customerId": "8508871",
"notificationWhenIssued": {
"destinations": {
"channel": "email",
"address": "razvan.nicolae90@yahoo.com"
}
},
"notificationBeforeDueDate": {
"destinations": {
"channel": "email",
"address": "razvan.nicolae90@yahoo.com"
},
"daysBeforeDueDate": "2"
}
}]
发布JSON后,收到此消息错误:
{"message":"Can not deserialize instance of com.upc.portal.business.SetCustomerInvoiceNotificationsRequestBO
out of START_ARRAY token\n at
[Source: weblogic.servlet.internal.ServletInputStreamImpl@17ac5e2; line: 1, column: 1]",
"stackTrace":"[org.codehaus.jackson.map.JsonMappingException.from(Unknown Source)...
答案 0 :(得分:0)
我找到了问题的答案:
我刚把它添加到我的web.xml文件中:
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>
my.own.packages;
org.codehaus.jackson.jaxrs</param-value>
</init-param>
我还包括一个jar - jackson-all-1.8.10
使用正确的json输入文件格式就可以了。