0

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)...
4

1 に答える 1

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 入力ファイルの正しい形式で問題なく機能しました。

于 2013-11-12T07:46:11.937 に答える