将字符串的 Java ArrayList 转换为 JavaScript 数组
Posted
技术标签:
【中文标题】将字符串的 Java ArrayList 转换为 JavaScript 数组【英文标题】:Converting a Java ArrayList of strings to a JavaScript array 【发布时间】:2013-06-30 16:20:44 【问题描述】:在我的 Java 代码中,我有一个 ArrayList
和 String
s。我想将此数据放在我正在处理的 JSP 页面上的 javascript 变量中。我的第一个想法是直接包含它,例如:
var myArray = <%= arrayList %>;
不幸的是,在执行时,myArray
是[a,b,c]
格式的字符串,而不是实际的 JavaScript 数组。如何从 Java ArrayList
获取一些数据到 JavaScript 数组?
【问题讨论】:
请用示例数据添加更多代码 【参考方案1】:没有库:
Java:
public static String toJavascriptArray(String[] arr)
StringBuffer sb = new StringBuffer();
sb.append("[");
for(int i=0; i<arr.length; i++)
sb.append("\"").append(arr[i]).append("\"");
if(i+1 < arr.length)
sb.append(",");
sb.append("]");
return sb.toString();
JSP:
var myArray = <%= toJavascriptArray(arrayList) %>;
【讨论】:
技术不错,但还是需要解析成JSON,同时赋值给javascript变量。【参考方案2】:当您使用<%=arraylist%>
时,它会调用列表中的toString()
并打印[a,b,c]
不,您不能直接将 Java arrayList
转换为 javascript 数组,将 Java ArrayList
转换为 JSON String
,并使用 JSON.parse()
获取 Javascript object
。
看看Json objet和Json in java
【讨论】:
谢谢哥们。我有像[a,b,c]这样的json字符串。当我使用 Json.parse(aa);它显示了错误。未捕获的引用 error.a 未定义。所以它必须像 ["a","b","c"]。那么如何转换成这样呢? 老兄,您必须将 json 库添加到您的类路径中,并将服务器端的 arraylist 转换为 json 字符串并将其发送给客户端。然后 JSON.parse() 工作:) 答案中的第二个链接不再可用。【参考方案3】:在您的 JSP 页面中执行以下操作
<% List<String> strList = new ArrayList<String>();
strList.add("one");
strList.add("two");
strList.add("three"); %>
var jsArray = [<% for (int i = 0; i < strList.size(); i++) %>"<%= strList.get(i) %>"<%= i + 1 < strList.size() ? ",":"" %><% %>];
输出将是
var jsArray = ["one","two","three"];
如果您的列表为空,它将输出
var jsArray = [];
【讨论】:
【参考方案4】:JavaScript split() 方法返回一个数组,因此它是一种将 Java ArrayList 转换为 JavaScript 数组的简单方法。
function toJavascript()
var array="<%=javaArrayList%>";
array=array.replace("[", "");
array=array.replace("]", "");
return javaArray.split(",");
【讨论】:
【参考方案5】:试试这个方法:
var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>;
【讨论】:
以上是关于将字符串的 Java ArrayList 转换为 JavaScript 数组的主要内容,如果未能解决你的问题,请参考以下文章
在java中将字符串转换为arraylist <Character>