【问题标题】:Converting a Java ArrayList of strings to a JavaScript array将字符串的 Java ArrayList 转换为 JavaScript 数组
【发布时间】:2013-06-30 16:20:44
【问题描述】:

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

var myArray = <%= arrayList %>;

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

【问题讨论】:

  • 请用示例数据添加更多代码

标签: java javascript jsp


【解决方案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】:

当您使用&lt;%=arraylist%&gt; 时,它会调用列表中的toString() 并打印[a,b,c]

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

看看Json objetJson 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) %>;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 2012-08-29
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多