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

时间:2016-12-09 17:04:22

标签: 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=

这包含(几乎结束时)字符{},其中脚本停止使用错误:

  

无效或意外的令牌。

我认为这是因为提到的字符。 我将如何逃脱这些角色。这可能与ftl的给定builtIn函数有关,还是需要更复杂的方法?

1 个答案:

答案 0 :(得分:1)

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