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

How to parse complex elements,containing special characters, in freemarker list to javascript array

我有以下问题,我需要将自由标记列表的值复制到 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.

我认为这是因为提到的字符。 我将如何另外转义这些字符。使用 ftl 的给定内置函数是否可能,或者我是否需要更复杂的方法?

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