如何在servlet中获取jQuery JSON请求参数?

我有以下javascript代码:

var data = {message:"Hi"} var sendJson = function (){ alert(data); $.ajax({ url:"./jsonTest", data: data, contentType:"application/json", type:"post", dataType:"json" }).success(function(reply) { alert("successful"); }); } 

如何在servlet上获取JSON对象?

我以前试图使用它

 request.getParameter("data") 

并尝试将其转换为JsonObject,但我一直变为null

@Kebs,

如果这还没有弄清楚..你可以在这里找到答案:)

试试下面这一行。 data只是javascript变量,但jquery会将消息成员放在URL params而不是data中。

 request.getParameter("message"); 

如果data是对象,它将被转换为请求参数字符串

pameterName1 =值1&pameterName2 =值2

你可以通过使用它来获得它

request.getParameter("pameterName1");

您可能想要查看构建在基本Servlet API之上的JAX-RS容器(Jersey),但是为JSON获取数据绑定更方便。

但是如果你必须使用原始的Servlet API,那么POST内容将通过请求对象提供; 获取InputStream,并使用像Jackson这样的JSON库绑定到对象:

MyBean bean = new ObjectMapper()。readValue(httpRequest.getInputStream(),MyBean.class);

并且类似地,如果您需要返回JSON对象,请执行相反的操作:

objectMapper.writeValue(httpResponse.getOutputStream(),resultObject);