将字符串的Java数组列表转换为JavaScript数组

Converting a Java ArrayList of strings to a JavaScript array

本文关键字:数组 转换 JavaScript 列表 Java 字符串      更新时间:2023-09-26

在我的Java代码中,我有一个Strings的ArrayList。我想把这些数据放在我正在处理的JSP页面上的JavaScript变量中。我的第一个想法是直接包含它,例如:

var myArray = <%= arrayList %>;

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

使用库:

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

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

不,您不能直接将From Java arrayList转换为javascript数组,将Java ArrayList转换为JSON String,并使用JSON.parse()获得javascript object

查看java中的Json objet和Json

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

JavaScript split()方法返回一个数组,因此它是将Java ArrayList转换为JavaScript数组的一种简单方法。

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

试试这个方法:

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

简单

 var jsArray = JSON.parse(yourJavaListObject)