编辑也许这是更好的解释(抱歉,我比英语更了解 javascript...而且我不太了解 javascript :-)
我需要通过我的 servlet 将使用 jquery $.ajax 发送的复杂 JavaScript 对象映射到 java bean 中。
这是一个用 jQuery 完成并用 Firebug 嗅探的真实示例。 这是js代码:
$("#test").click(function(){
$.ajax({
url: "/server",
data: { "data1": [{key:1, val:2},{key:3, val:4}] },
type: "post",
}
});
});
如您所见,我在 $.ajax 数据中发送一个复杂的对象,而不是一个简单的 map 。 如果我检查如何使用 firebug 嗅探器发送 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 将复杂对象转换为简单映射的方式。我想在 java bean 中获取这个对象。 谢谢。
编辑2 这个:Java convert JSONObject to URL parameter似乎和我的要求完全相反。但它没有答案...
最佳答案
这是 JSON,您可以使用 Gson用于将其映射到 POJO 的库。请参阅this tutorial
读取 HttpServletRequest
Gson gson = new Gson();
SomeClass someClass = gson.fromJson(
new InputStreamReader(httpServletRequest.getInputStream()), SomeClass.class);
编辑
您可能想查看this topic这应该可以帮助您将 JSON 映射到 POJO(或您所说的 Java beans)。
编辑2
尝试添加processData
参数并将其设置为false
。这应该可以防止将给定的 JSON 转换为查询字符串。
$("#test").click(function(){
$.ajax({
url: "/server",
data: { "data1": [{key:1, val:2},{key:3, val:4}] },
type: "post",
processData: false
});
});
关于Java解析获取jquery发送的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723400/