【问题标题】:Passing array from javascript to java servlet using Jackson使用 Jackson 将数组从 javascript 传递到 java servlet
【发布时间】:2011-03-26 21:43:44
【问题描述】:

我正在尝试使用 Jackson 将数组从 javascript 传递到 java servlet,如何做到这一点..谢谢

【问题讨论】:

    标签: java javascript json servlets jackson


    【解决方案1】:

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

    $.ajax({
      url: 'your servlet url',
      data: yourArray
    });
    

    然后在服务器端,您可能希望将 JSON 反序列化为 JavaBean,或者在您的情况下,使用 Jackson 将 java.util.List 反序列化。你可以这样做:

    ObjectMapper mapper = new ObjectMapper();
    List array = mapper.readValue(jsonText, List.class);
    

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

    【讨论】:

    • 您的客户端代码以查询字符串格式发送数据,而不是 JSON。
    【解决方案2】:

    基本思想应该是直截了当的:

    服务器:

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

    客户:

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

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

    【讨论】:

    • 感谢 matthew 的回复...我使用 YUI 3,数组到达 servlet,一切正常,但我需要从请求中获取正确的参数。我用 req.getParameter("myArray") 替换了 req.getReader() 但仍然无法正常工作
    • 没关系...它的工作我使用 req.getParameterValues("myArray"),感谢您的帮助
    • @Mohammed,如果您使用的是getParameterValues,那么您可能没有使用 JSON。你很可能有一个常规的 GET 查询字符串。
    • 我认为它的工作...我使用杰克逊。那么是否可以使用 ArrayNode rootNode = mapper.readValue(req.getReader(), ArrayNode.class) 从 HttpServletRequest 中选择特定参数; ??
    • 好的,由于 YUI 发送请求的方式,您似乎确实需要 getParameterValues 和 Jackson。
    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 2011-05-07
    • 2015-05-21
    • 2018-01-04
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多