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

IT技术 java javascript jsp
2021-01-26 03:19:08

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

var myArray = <%= arrayList %>;

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

5个回答

没有图书馆:

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 变量。
2021-04-05 03:19:08

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

不,您不能直接从 Java 转换arrayList为 javascript 数组,将 Java 转换ArrayListJSON String,并用于JSON.parse()获取 Javascript object

看看Java 中的Json objetJson

伙计,您必须将 json 库添加到您的类路径并将服务器端的数组列表转换为 json 字符串并将其发送到客户端。然后 JSON.parse() 工作:)
2021-03-16 03:19:08
谢谢,兄弟。我有像 [a,b,c] 这样的 json 字符串。当我使用 Json.parse(aa); 它显示错误。未捕获的引用 error.a 未定义。所以它必须像 ["a","b","c"]。那么如何转换成这样呢?
2021-03-23 03:19:08
答案中的第二个链接不再可用。
2021-03-28 03:19:08

在您的 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) %>;