【问题标题】:Reading Javascript 2d String array in Servlet在 Servlet 中读取 Javascript 2d 字符串数组
【发布时间】:2016-10-08 10:18:58
【问题描述】:

我的 JavaScript 应用程序中有一个二维数组变量,我想在我的 Java Servlet 中读取该数组。

var arry = [["property","one"],["class","name"]];

我使用 AJAX 将它传递给 servlet:

$.ajax({
    type: "POST",
    url: "DocumentUploader",
    data: 'array1=' + arry,
    dataType: "json"
}); 

现在我知道我可以通过request.getParameter("array1") 遍历数组。但问题是,显然我无法访问数组索引值:

String[] arr = request.getParameter("array1");
System.out.println(arr[0][1]);

因为索引的类型为String。 请问有没有办法读取这种类型的JS数组?

【问题讨论】:

  • 尝试使用 JSON.parse(text)。使用此网址w3schools.com/json/json_eval.asp
  • 使用 http 'Post' 将数组发送到 servlet。如果您使用 Jersey 2 作为与 Jackson 结合的 servlet,您将在服务器端获得一个 Java 对象。
  • 好的。但问题是数组中key的String也会被一些JS代码动态定义。我无法在此处更改该代码,只能使用此代码。 key 的字符串值和与 key 关联的值,都是动态确定的。

标签: javascript java arrays servlets


【解决方案1】:

您需要一些工具来读取 JSON 格式的 String 并将其转换为 Java 对象。

你有JsonObject,它是 Java 附带的(但我相信只有 JavaEE)。了解更多信息here

然后你有两个流行的 JSON 处理库,JacksonGSON。两者都不是最好的,但杰克逊往往更受欢迎,因为它处理与泽西岛的自动绑定。

【讨论】:

  • 好的。但问题是数组中key的String也会被一些JS代码动态定义。我无法在此处更改该代码,只能使用此代码。 key 的字符串值和 key 关联的值,都是动态确定的
  • 这不是问题。你有没有花点时间阅读我给你的信息。以下是有关未知格式 JSON 处理的更多信息:wiki.fasterxml.com/JacksonTreeModel
【解决方案2】:

arry = [{"property": "one"},{"class": "name"}];

尝试使用这种格式格式化您的数组,然后在 Java 端使用 JSON.parse。希望对你有帮助

【讨论】:

    猜你喜欢
    • 2011-07-17
    • 2014-10-17
    • 2012-01-27
    • 1970-01-01
    • 2014-09-05
    • 2017-02-16
    • 1970-01-01
    • 2013-03-20
    • 2017-09-09
    相关资源
    最近更新 更多