You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FreeMarker中使用名称含连字符的变量?

解决FreeMarker渲染带连字符键的Map变量报错问题

嘿,这个问题我太熟悉了!FreeMarker的变量语法默认会把连字符当成减法运算符,所以直接写${first-name}的时候,它会试图计算first减去name,自然就报错了——毕竟你根本没有这两个单独的变量。不过好在有完美的解决方案,完全不需要修改第三方API返回的数据,下面给你两种最实用的方法:

方法一:使用方括号语法访问Map键

这是最直接也最通用的方式,FreeMarker支持通过字符串键来访问Map的元素,不管键里有什么特殊字符。

假设你的第三方JSON数据转成的Map变量名为apiData,那原来的代码:

<head><title>Data - ${first-name} </title>

可以改成:

<head><title>Data - ${apiData['first-name']} </title>

如果这个带连字符的键是顶层变量(没有嵌套在某个Map里),可以用FreeMarker的内置变量.vars来访问:

<head><title>Data - ${.vars['first-name']} </title>

.vars相当于当前上下文的变量容器,通过字符串键就能精准获取到你需要的那个带特殊字符的变量。

方法二:使用get()方法(如果适用)

如果你的数据对象支持get()方法(比如Groovy里的Map其实是支持的),也可以这样写:

<head><title>Data - ${apiData.get('first-name')} </title>

不过这种方法和方括号语法效果差不多,方括号的写法更简洁直观一些。

这两种方法都不需要修改原始的JSON数据,完美适配你无法控制变量名称的场景,赶紧试试吧!

内容的提问来源于stack exchange,提问作者Justin Lawler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:43:18