javascript - 如何将freemarker列表中包含特殊字符的复杂元素解析为javascript数组

标签 javascript arrays list escaping freemarker

我遇到以下问题,我需要将 freemarker 列表的值复制到 JavaScript 数组。

目前,我有以下内容:

var items = [[#list cart.lineItems as item]${item?js_string}[/#list]];

结果如下:

[LineItemImpl[productId=3e14a4f7-7f35-4010-8346-76b51eec9cb4,variant=ProductVariantImpl[productId=3e14a4f7-7235-4110-8326-76b51eec9cb4,id=1,sku=anySKU,prices=[PriceImpl[currentValue=<null>,value=EUR 19.99000,country=DE,customerGroup=<null>,channel=<null>,discounted=<null>,validFrom=<null>,validUntil=<null>,id=f43967f7-2h73-43ac-a0c0-ea506b9fe66e,custom=<null>]],label=Damen Sport Shirt Rückansicht Größe XS]],availability=ProductVariantAvailabilityImpl[isOnStock=true,restockableInDays=<null>,channels={},availableQuantity=10],isMatchingVariant=<null>,price=<null>,scopedPrice=<null>,scopedPriceDiscounted=<null>,key=<null>,assets=[],attributes=[AttributeImpl[name=color,value={\"key\":\"white\",\"label\":\"Weiß\"}], AttributeImpl[name=Material,value={\"label\":\"Polyester\",\"key\":\"polyester\"}], AttributeImpl[name=Fuer,value=

这包含(几乎在末尾)字符 { },其中脚本停止工作并出现错误:

Invalid or unexpected token.

我认为这是因为提到的 Angular 色。 我怎样才能另外逃脱这些 Angular 色。使用 ftl 给定的内置函数可以实现这一点吗?还是我需要更复杂的方法?

最佳答案

看来您不仅仅是想在 JavaScript 字符串的中间插入一些字符串(这就是 ?js_string 的用途)。您想要将一堆 Java 对象转换为 JavaScript。假设这些对象只是基本的 JavaBeans 和 List-s/array-s,也许您可​​以使用 Jackson 或其他将 Java 对象编码为 JSON 的库来实现。 FreeMarker 与此无关;如果你有 JSON,你只需插入它而不转义。

关于javascript - 如何将freemarker列表中包含特殊字符的复杂元素解析为javascript数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065428/

相关文章:

javascript - AngularJS - 使用 angular.forEach 和 console.log 循环数组是不可预测的

javascript - 如何允许用户在显示照片滑动库时单击链接?

python - 无法在 Python 的列表列表中索引多个元素(使用 : operator)

python - 如何计算与列表中点的距离?

Python 集与列表

JavaScript 从字符串中解析 int

javascript - 获取跨域 HTTPS iFrame 的父文档来源

c# - 在 C# 中过滤数组

ruby-on-rails - 如何输出数组中元素的位置

c# - 在C#中,你如何称呼数组引入的那种多态性?