2012-06-26 135 views
0

我將sendng json數據發送到另一個jsp頁面 - 用於真正的測試。JSON處理 - 發送JSON文本字符串到JSP,如何使用JSONObject或GSON在JSP中處理

您在我的jsp上的文本字段中輸入J​​SON格式的字符串。我通過一個表單請求提交,由jquery處理。它被髮送到接收器JSP。我正在使用下面的代碼來做到這一點。

之前,我把它我得到使用數據:

jsonData = $form.find('textarea[name="jsonData"]').val(); 

我那麼做:

var parsedJsonObject = $.parseJSON(jsonData); 

這是我的發送代碼:

$.ajax({ 
    type:  "POST", 
    url:  "receiver.jsp", 
    data:  "jsonData=" + parsedJsonObject, // This is an object, created using parseJSON 
    success: function(data, textStatus, jqXHR) { 
        alert('Success : ' + data); 
        alert('textStatus : ' + textStatus); 
        alert('jqXHR : ' + jqXHR); 
        var jsonJqXHR = JSON.stringify(jqXHR); 
        alert('jsonJqXHR : ' + jsonJqXHR); 
    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert('Error xhr : ' + xhr.status); 
     alert('Error thrown error: ' + thrownError); 
    }, 
    //complete: alert('complete'), 
    dataType: "text" // xml, json, script, text, html       
}); 

在我的JSP中,我做一個:

String jsonData = request.getParameter("jsonData"); 
System.out.println("jsonData : " + jsonData); 

這將返回以下輸出:json:「[object Object]」

如何反序列化它?我做了一些事情GSON,但是當我曾嘗試:

Gson gson = new Gson(); 
String json = gson.toJson(obj); 
System.out.println("json = " + json); // I still get an output of: json = "[object Object]" 
gson.fromJson(json, MyClass.class); 

我得到一個錯誤:

servlet jsp threw exception: com.google.gson.JsonParseException: Expecting object found: "[object Object]" 

誰能幫助請上我需要得到這個信息帶出對象的方式?

+0

什麼是'obj'使'gson.toJson(OBJ);'給你'「[object object]」'? –

回答

1

在你的AJAX調用,data: "jsonData=" + parsedJsonObject不會做你想要什麼:

它只是給你喜歡[object Object]一個字符串,而不是JSON表示你正在尋找。

使用data: "jsonData=" + JSON.stringify(parsedJsonObject)或某些jQuery等效項。

+0

所以我正確地思考,你不能通過我的Ajax Post發送parsedJsonObject(Object)? – babb

+0

作爲一個對象的'parsedJsonObject'只存在於瀏覽器的內存/ JavaScript引擎中,如果你想在某個地方發佈它,你需要某種傳輸編碼。對於一個Javascript對象,這自然是一個JSON字符串,它是'JSON。stringify()'很容易爲你提供。 –

+0

Hi @Philipp Reichart所以如果我使用:var parsedJsonObject = $ .parseJSON(jsonData);這將解析我所擁有的數據字符串 - 確保其'有效格式,我使用stringify將其放回到文本字符串傳遞? – babb