Java解析获取jquery发送的参数
编辑也许这是一个更好的解释(对不起,我对javascript的了解比英语好…我对javascript的了解不是很好:-) 我需要映射一个复杂的javascript对象,该对象由servlet在Javabean中与jquery$.ajax一起发送 这是一个使用jQuery完成并使用Firebug嗅探的真实示例。 这是js代码: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
$("#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中数据:
之后的确切字符串。