我使用Velocity(orven.apache.velocity的Maven版本1.7)作为模板引擎,我想要输出如下:
{
total : 234
}
现在当我尝试:
{
total : $listing.size()
}
我收到错误:
Error: Parse error on line 1:
{ total : 0}
--^
Expecting 'STRING', '}'
当我试图逃避花括号时:
\{
total : $listing.size()
\}
我在最终输出中得到了转义字符!:
\{
total : 234
\}
答案 0 :(得分:1)
很抱歉这是由于我生成的JSON不正确,Chrome浏览器的扩展程序“JSONView”向我指出。这是因为我的钥匙不是字符串......即我有:
{total: 0}
但我应该:
{"total" : 0}
答案 1 :(得分:1)
确实有更好的方法可以做到这一点。
使用此处接受的答案(How to XML escaping with Apache Velocity?)进行初始设置
您还需要添加velocity-tools依赖项:
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
然后你可以像这样使用Velocity Engine的转义机制(对于你的情况)
$esc.java("{total: 0}")
您还可以在此处查看更多转义选项(http://velocity.apache.org/tools/devel/generic/EscapeTool.html)
答案 2 :(得分:0)
我最终创建了一个常量ocb = {
和ccb = }
并使用$ocb
和$ccb
。
我相信有更好的方法。 ;)
答案 3 :(得分:0)
以下是您的情况: http://velocity.apache.org/engine/devel/user-guide.html#escapinginvalidvtlreferences
<强>更新强>
首先尝试这样做:
#set( $startbrace = "{" )
#set( $endbrace = "}" )
然后将您的文字设为:
$startbrace
total : $listing.size()
$endbrace