【问题标题】:Java ArrayList to Javascript ArrayJava ArrayList 到 Javascript 数组
【发布时间】:2018-11-26 11:02:22
【问题描述】:

我有一个 Java ArrayList,我想将它发送到 javascript 用于其他目的。

这是我的 Java ArrayList

List<String> list = new ArrayList<String>();
list.add("xxx");
list.add("yyy");
....

model.addAttribute("theList", list);

以及如何将 ArrayList 发送到 javascript Array 中?

我希望在我的 javascript 代码中出现这种情况

<script th:inline="javascript">

 var Array = ["xxx","yyy","xxx"];

</script>

我真的很抱歉再次问这种类型的问题,我知道关于这个案例已经回答了问题和重复的问题,但我真的不明白答案。也许是一些 JSON 的东西或其他方式。 请告诉我如何用java代码和javascript代码编写代码。 谢谢。

【问题讨论】:

标签: javascript java arrays json arraylist


【解决方案1】:

如 cmets 中所述,您可以使用库将对象序列化为 json 字符串。也就是说,可以将每个list元素转换成一个json对象节点,把所有的json对象节点放到一个数组中。

序列化程序的作用

它会查看您的对象并从中创建一个 json 表示(序列化)。与序列化器相反的是反序列化器,用于将 json 字符串转换为 Java 对象。

为什么要使用库

虽然您可以手动完成(见下文),但 cmets 中提到的 Gson 或开源社区中的 jackson 等库已经在大量测试用例上进行了测试,并且很可能会无论您的用例是什么,都足够强大。

以杰克逊为例

here

示例“自己动手”

您的情况非常简单,因为您的列表元素是字符串。

// create a string builder to build the json
StringBuilder sb = new StringBuilder();

// loop over each string in the list
for (String s : list) {
    // add an initial delimiter, which will be 
    // removed at the end
    sb.append(",");

    // add a beginning quote to each term
    sb.append("\""); 

    // add the string
    sb.append(s);

    // close the quote
    sb.append("\"");
}

if (sb.length() > 0) {
    // if there was at least one element
    // in the list, remove the initial comma
    sb.deleteCharAt(0);
}

// add a left square bracket
sb.insert(0, "[");

// add a right square bracket
sb.append("]");

// your string, for example
// ["one","two","three"]
String json = sb.toString();

回到“为什么要使用库”,上面的代码并没有说明很多可能性,其中最明显的是,如果列表中的一个字符串包含一个 " 字符,它将把一切都搞砸。请注意,有很多方法可以处理上述问题。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    Scriptlet 标签允许将 Java 代码写入 JSP 文件。

    语法

    <% java code %>
    

    这里的标签是scriplets标签,我们可以在其中放置java代码。

    `<% List<String> strList = new ArrayList<String>();
    strList.add("xxx");
    strList.add("yyy");
    strList.add("zzz");%>`
    

    var jsArray = [&lt;% for (int i = 0; i &lt; strList.size(); i++) { %&gt;"&lt;%= strList.get(i) %&gt;"&lt;%= i + 1 &lt; strList.size() ? ",":"" %&gt;&lt;% } %&gt;];

    输出将是

    var jsArray = ["xxx","yyy","zzz"];
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 2017-01-18
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多