使用Jackson将数组从javascript传递到Javaservlet

使用Jackson将数组从javascript传递到Javaservlet,java,javascript,json,servlets,jackson,Java,Javascript,Json,Servlets,Jackson,我正在尝试使用Jackson将一个数组从javascript传递到java servlet,这是如何实现的。感谢您将数组从浏览器传递到服务器端,您不需要Jackson。您只需要Ajax。例如,使用jQuery,您可以这样做: $.ajax({ url: 'your servlet url', data: yourArray }); ObjectMapper mapper = new ObjectMapper(); List array = mapper.readValue(jsonTe

我正在尝试使用Jackson将一个数组从javascript传递到java servlet,这是如何实现的。感谢您将数组从浏览器传递到服务器端,您不需要Jackson。您只需要Ajax。例如,使用jQuery,您可以这样做:

$.ajax({
  url: 'your servlet url',
  data: yourArray
});
ObjectMapper mapper = new ObjectMapper();
List array = mapper.readValue(jsonText, List.class);
然后在服务器端,您可能希望使用Jackson将JSON反序列化为JavaBean,或者在您的示例中,反序列化为
java.util.List
。您可以这样做:

$.ajax({
  url: 'your servlet url',
  data: yourArray
});
ObjectMapper mapper = new ObjectMapper();
List array = mapper.readValue(jsonText, List.class);

其中
jsonText
包含从浏览器发送到服务器端的
yourArray
的字符串表示形式。

要将数组从浏览器传递到服务器端,不需要Jackson。您只需要Ajax。例如,使用jQuery,您可以这样做:

$.ajax({
  url: 'your servlet url',
  data: yourArray
});
ObjectMapper mapper = new ObjectMapper();
List array = mapper.readValue(jsonText, List.class);
然后在服务器端,您可能希望使用Jackson将JSON反序列化为JavaBean,或者在您的示例中,反序列化为
java.util.List
。您可以这样做:

$.ajax({
  url: 'your servlet url',
  data: yourArray
});
ObjectMapper mapper = new ObjectMapper();
List array = mapper.readValue(jsonText, List.class);

其中
jsonText
包含从浏览器发送到服务器端的
yourArray
的字符串表示形式。

基本思想应该简单明了:

服务器:

doPost(HttpServletRequest req, HttpServletResponse resp)
{
  ObjectMapper mapper = new ObjectMapper();
  ArrayNode rootNode = mapper.readValue(req.getReader(), ArrayNode.class);
}
客户:

使用jQuery(您也可以使用其他框架或手动执行)。加载的副本以确保具有JSON.stringify

jQuery.ajax({
  type: 'POST',
  url: servletURL,
  data: JSON.stringify(jsArray),
  dataType: 'json',
  contentType: 'application/json'
});

基本思路应该简单明了:

服务器:

doPost(HttpServletRequest req, HttpServletResponse resp)
{
  ObjectMapper mapper = new ObjectMapper();
  ArrayNode rootNode = mapper.readValue(req.getReader(), ArrayNode.class);
}
客户:

使用jQuery(您也可以使用其他框架或手动执行)。加载的副本以确保具有JSON.stringify

jQuery.ajax({
  type: 'POST',
  url: servletURL,
  data: JSON.stringify(jsArray),
  dataType: 'json',
  contentType: 'application/json'
});

您的客户端代码以查询字符串格式(而不是JSON)发送数据。您的客户端代码以查询字符串格式(而不是JSON)发送数据。感谢matthew的回复…我使用YUI 3,数组到达servlet,一切正常,但我需要从请求中获取正确的参数。我用req.getParameter(“myArray”)替换了req.getReader(),但仍然不起作用…它起作用了,我使用了req.getParameterValues(“myArray”),谢谢helping@Mohammed,如果您使用的是
getParameterValues
,则可能没有使用JSON。您很可能有一个常规的GET查询字符串。我认为它工作了…我在使用Jackson。那么,是否可以使用ArrayNode rootNode=mapper.readValue(req.getReader(),ArrayNode.class);?,从HttpServletRequest中选择特定参数呢??好的,由于YUI发送请求的方式,看起来您确实需要
getParameterValues
和Jackson。感谢matthew的回复…我使用YUI 3,数组到达servlet,一切都正常,但我需要从请求中获取正确的参数。我用req.getParameter(“myArray”)替换了req.getReader(),但仍然不起作用…它起作用了,我使用了req.getParameterValues(“myArray”),谢谢helping@Mohammed,如果您使用的是
getParameterValues
,则可能没有使用JSON。您很可能有一个常规的GET查询字符串。我认为它工作了…我在使用Jackson。那么,是否可以使用ArrayNode rootNode=mapper.readValue(req.getReader(),ArrayNode.class);?,从HttpServletRequest中选择特定参数呢??好的,看起来您确实需要
getParameterValues
和Jackson,因为YUI发送请求的方式。