编辑也许这是更好的解释(对不起,我知道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数据中发送了一个复杂的对象,而不是简单的地图。 如果我检查如何使用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中获取此对象。 感谢。
EDIT2 这:Java convert JSONObject to URL parameter似乎正好与我的要求相反。但它没有答案......
答案 0 :(得分:2)
这是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 bean)。
编辑2
尝试添加processData
参数并将其设置为false
。这应该可以防止将给定的JSON转换为查询字符串。
$("#test").click(function(){
$.ajax({
url: "/server",
data: { "data1": [{key:1, val:2},{key:3, val:4}] },
type: "post",
processData: false
});
});