1

データを保存するためのjsonオブジェクトを作成し、それをサーブレットに送信しています。しかし、オブジェクトを取得してその内容をJavaサーブレットに表示しようとすると、「JSONObjectテキストは1[文字2行1]の'{'で始まる必要があります」というエラーがスローされます。javascriptから送信されたjsonオブジェクトをjavaで表示する方法がわかりません。これが私がしていることです:

Javascriptコード:

var arrayOfObjects = [];
arrayOfObjects.push({"divid":imageinc,"xCordinates":Xcord,"yCordinates":Ycord,"Height":canvasWidth,"Width":canvasHeight, "PageNo":pageNum});

Javascriptコンテンツの表示:

for (var i = 0; i < arrayOfObjects.length; i++) {
var object = arrayOfObjects[i];
for (var property in object) {
    alert(property + '=' + object[property]);
}
}

jquery Ajaxを使用してオブジェクトをサーブレットに送信します:

    var param = 'objarray=' +arrayOfObjects;

    $.ajax({
      url: '/ProjectName/finalXmlServGen',
      type: 'POST', 
      dataType: 'json',  
      data: param,
      success: function(result) {
          alert('SUCCESS');
      }
    });

ajaxを呼び出すと、成功メッセージが表示されます。今、私はサーブレットでこのオブジェクトを次のように受け取っています:

String objarray = request.getParameter("objarray").toString();
try {
        JSONObject jsonObj = new JSONObject(objarray);          

        String xmlString= XML.toString(jsonObj);
        System.out.println("JSON to XML: " + xmlString);
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

コンソールに表示されるメッセージは、「JSONObjectテキストは1[文字2行1]の'{'で始まる必要があります」というエラーです。オブジェクトを解析してxmlまたは文字列を作成するにはどうすればよいですか?

4

2 に答える 2

5

作成するのは「JSONオブジェクト」ではなく、プレーンなjavascriptオブジェクトです。

オブジェクトをJSONでエンコードする必要があります:

var param = '?objarray=' + JSON.stringify(arrayOfObjects);
$.ajax({
     url: '/ProjectName/finalXmlServGen'+param,
     type: 'POST', 
     dataType: 'json',  
     success: function(result) {
       alert('SUCCESS');
     }
});

または、jQueryにエンコードを行わせることもできます。

$.ajax({
     url: '/ProjectName/finalXmlServGen',
     type: 'POST', 
     dataType: 'json',
     data: {objarray: arrayOfObjects}
     success: function(result) {
       alert('SUCCESS');
     }
});
于 2012-12-31T08:39:10.587 に答える
3

Java側では、最初にJSON配列をJava POJO Beanに変換して、(簡単に)何かを実行できるようにする必要があります。これを行うための複数のAPIがあります。GoogleGSONとJacksonは2つの可能性です。

Jacksonは、JAX-RSAPIのリファレンス実装であるJerseyによって内部的に使用されます。私の経験では非常にうまく機能します。

于 2012-12-31T09:15:49.387 に答える