将string的Java ArrayList转换为JavaScript数组

在我的Java代码中,我有一个StringArrayList 。 我想将这些数据放在我正在处理的JSP页面上的JavaScriptvariables中。 我的第一个想法是直接包括它,例如:

 var myArray = <%= arrayList %>; 

不幸的是,当执行时, myArray是格式为[a,b,c]的string,而不是实际的JavaScript数组。 如何从Java ArrayList获取一些数据到JavaScript数组?

当你使用<%=arraylist%>它调用列表上的toString()并打印[a,b,c]

不,你不能直接转换从Java arrayList到JavaScript数组,将Java ArrayList转换为JSON String ,并使用JSON.parse()来获得Javascript object

在Java中看看Json objetJson

随着图书馆:

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) %>; 

在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 = []; 

试试这个方法:

 var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>; 

JavaScript split()方法返回一个数组,因为我们知道,所以它是将javaArrayList转换为javascript数组的最简单方法。 它对我来说工作正常。

 function toJavascript(){ &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var array="<%=javaArrayList%>";<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; array=array.replace("[", "");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; array=array.replace("]", "");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return javaArray.split(",");<br> }