使用Jackson将数组从javascript传递到Javaservlet
我正在尝试使用Jackson将一个数组从javascript传递到java servlet,这是如何实现的。感谢您将数组从浏览器传递到服务器端,您不需要Jackson。您只需要Ajax。例如,使用jQuery,您可以这样做:使用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
$.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发送请求的方式。