转义大括号{以Velocity

抱歉:这很糟糕。此错误是由于JSON产生不正确以及Chrome扩展名为“ Chrome中的JSONView”造成的。查看我自己的答案(我必须自己回答-因为我无法删除该问题了)。 我正在使用Velocity(org.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
\\}
    
已邀请:
抱歉,这是由于我生成的JSON不正确,Chrome浏览器的扩展名“ JSONView \”向我指出的。这是因为我的键不是字符串...即我有:
 {total: 0}
但我应该有:
 {\"total\" : 0}
    
确实,有更好的方法可以做到这一点。 使用此处接受的答案(如何使用Apache Velocity进行XML转义?)进行初始设置 您还需要添加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)     
我最终创建了常量
ocb = {
ccb = }
并使用
$ocb
$ccb
。 我相信有更好的方法。 ;)     
这看起来像您的情况: http://velocity.apache.org/engine/devel/user-guide.html#escapinginvalidvtlreferences 更新: 尝试先执行以下操作:
#set( $startbrace = \"{\" )
#set( $endbrace = \"}\" )
然后使您的文本如下:
$startbrace
    total : $listing.size()
$endbrace
    

要回复问题请先登录注册