如何在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);