2016-06-08 35 views
0

我的JavaScript应用程序中有一个2维数组变量,我想在我的Java Servlet中读取该数组。在Servlet中阅读Javascript 2d字符串数组

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数组?

+0

尝试使用JSON.parse(文本)。使用此URL http://www.w3schools.com/json/json_eval.asp –

+0

使用http'Post'将数组发送到servlet。如果您使用Jersey 2作为与Jackson结合的servlet,则您将在服务器端获得一个Java对象。 – Stefan

+0

好的。但问题是数组中'key'的字符串也会被一些JS代码动态地定义。我无法在这里更改该代码,只能使用它。 密钥的字符串值和与密钥关联的值都是动态确定的。 –

回答

0

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

你有JsonObject随Java(但只有JavaEE,我相信)。详细了解它here

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

+0

好的。但问题是数组中的键的字符串也将由一些JS代码动态定义。我无法在这里更改该代码,只能使用它。密钥的字符串值和与密钥关联的值都是动态确定的 –

+0

这不是问题。你甚至花了一点时间阅读我给你的信息。这里有关于未知格式JSON处理的更多信息:http://wiki.fasterxml.com/JacksonTreeModel – dabadaba

0

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

尝试使用这种格式格式化您的数组,然后使用JSON.parse在Java端。我希望它可以帮助