将string的Java ArrayList转换为JavaScript数组
在我的Java代码中,我有一个String
的ArrayList
。 我想将这些数据放在我正在处理的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 objet和Json
随着图书馆:
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(){ var array="<%=javaArrayList%>";<br> array=array.replace("[", "");<br> array=array.replace("]", "");<br> return javaArray.split(",");<br> }