Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java解析获取jquery发送的参数_Java_Jquery_Ajax_Post_Get - Fatal编程技术网

Java解析获取jquery发送的参数

Java解析获取jquery发送的参数,java,jquery,ajax,post,get,Java,Jquery,Ajax,Post,Get,编辑也许这是一个更好的解释(对不起,我对javascript的了解比英语好…我对javascript的了解不是很好:-) 我需要映射一个复杂的javascript对象,该对象由servlet在Javabean中与jquery$.ajax一起发送 这是一个使用jQuery完成并使用Firebug嗅探的真实示例。 这是js代码: $("#test").click(function(){ $.ajax({ url: "/server", data: { "da

编辑也许这是一个更好的解释(对不起,我对javascript的了解比英语好…我对javascript的了解不是很好:-)

我需要映射一个复杂的javascript对象,该对象由servlet在Javabean中与jquery$.ajax一起发送

这是一个使用jQuery完成并使用Firebug嗅探的真实示例。 这是js代码:

$("#test").click(function(){
    $.ajax({
        url: "/server", 
        data: { "data1": [{key:1, val:2},{key:3, val:4}] }, 
        type: "post",               
        }
    });
});
如您所见,我在$.ajax数据中发送了一个复杂的对象,而不是一个简单的映射。 如果我使用firebug sniffer检查http请求的发送方式,我会得到以下POST参数:

Parameters application/x-www-form-urlencoded
data1[0][key]   1
data1[0][val]   2
data1[1][key]   3
data1[1][val]   4
这就是jquery将复杂对象转换为简单映射的方式。我想在Javabean中获取这个对象。 谢谢

EDIT2
这似乎与我的要求正好相反。但它没有答案…

这是JSON,您可以使用库将其映射到POJO。看

读取HttpServletRequest

Gson gson = new Gson();
SomeClass someClass = gson.fromJson(
        new InputStreamReader(httpServletRequest.getInputStream()), SomeClass.class);
编辑

您可能想看看哪些可以帮助您将JSON映射到POJO(或者您所说的Javabean)

编辑2

尝试添加
processData
参数并将其设置为
false
。这将防止将给定的JSON转换为查询字符串

$("#test").click(function(){
  $.ajax({
      url: "/server", 
      data: { "data1": [{key:1, val:2},{key:3, val:4}] }, 
      type: "post", 
      processData: false
  });
});

我已经使用了Gson,但我认为它可以从json字符串解码,你的意思是它也可以从http请求参数捕获对象吗?@Tobia我不太确定你所说的http请求参数是什么意思,但我更新了我的答案-看看是否合适。我试图解释如何更好地编辑我的问题,在您的示例中,我的httpServletRequest中似乎有一个json字符串,而不是get/postparams@TobiaFirebug嗅探器没有显示HTTP请求的真实外观。问题是每个请求都由头和数据组成。您的复杂对象将转换为JSON并发送到数据部分。如果要还原该对象,您必须(不是唯一选项)创建POJO,并使用
InputStreamReader
将JSON从数据部分转换为POJO。@Tobia要澄清一点,您在Firebug嗅探器中看到的是解析并格式化的HTTP请求。在JavaServlet中,您可以获得JavaScript中
数据:
之后的确切字符串。