【问题标题】:JSON Processing - Sending JSON text string to JSP, how to process in JSP with JSONObject or GSONJSON 处理 - 将 JSON 文本字符串发送到 JSP,如何在 JSP 中使用 JSONObject 或 GS​​ON 进行处理
【发布时间】:2012-06-26 10:38:41
【问题描述】:

我正在将 json 数据发送到另一个 jsp 页面 - 进行真正的测试。

您在我的 jsp 的文本字段中输入 JSON 格式的字符串。我通过一个表单请求提交这个,由 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]"

谁能帮我从对象中取出这些数据?

【问题讨论】:

  • 是什么objgson.toJson(obj); 给你"[object Object]"

标签: jquery ajax json jsp gson


【解决方案1】:

在您的 AJAX 调用中,data: "jsonData=" + parsedJsonObject 没有按照您的意愿行事:

它只是给你一个像[object Object] 这样的字符串,而不是你正在寻找的 JSON 表示。

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

【讨论】:

  • 我的想法是否正确,您不能通过我的 Ajax Post 发送 parsedJsonObject (Object)?
  • parsedJsonObject 作为一个对象只存在于浏览器的内存/Javascript 引擎中,如果你想在某个地方发布它,你需要某种传输编码。对于 Javascript 对象,这自然是一个 JSON 字符串,JSON.stringify() 很容易为您提供。
  • 嗨@Philipp Reichart 所以如果我使用:var parsedJsonObject = $.parseJSON(jsonData);这将解析我拥有的数据字符串 - 确保它的格式有效,然后我使用 stringify 将其放回文本字符串以传递?
【解决方案2】:

http://www.kodejava.org/examples/585.html

您需要一个类将其映射到相同的字段。您要发送哪些字段以及您尝试将其映射到的类中的哪些字段?

将 JSON 粘贴到此处并验证它是否正常,并且您的字段是否匹配。

http://jsonformatter.curiousconcept.com/

http://jsonviewer.stack.hu/

http://www.jsonviewer.com/

或获取 JSON 插件

https://addons.mozilla.org/en-US/firefox/addon/jsonview/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多