在 Velocity 中转义大括号 {

发布于 2024-11-01 18:24:26 字数 632 浏览 3 评论 0原文

抱歉:这是我的错。此错误是由于不正确的 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
\}

SORRY: This is my bad. This error is due incorrect json produce and to Chrome extension "JSONView in Chrome". See my own answer (I had to answer this myself - as I could not delete the question anymore).

I am using Velocity (Maven version 1.7 of org.apache.velocity) as templating engine, and I want output as follows:

{
   total : 234
}

now when I try:

{
    total : $listing.size()
}

I get an error:

Error: Parse error on line 1:
{   total : 0}
--^
Expecting 'STRING', '}'

enter image description here

and when I try to escape the curly braces:

\{
    total : $listing.size()
\}

I get the escape characters in the final output!:

\{
   total : 234
\}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

-残月青衣踏尘吟 2024-11-08 18:24:26

抱歉,这是由于我生成的 JSON 不正确,Chrome 浏览器的扩展“JSONView”向我指出了这一点。这是因为我的钥匙不是字符串......即我有:

 {total: 0}

但我应该有:

 {"total" : 0}

Sorry this was due incorrect JSON I was producing, which Chrome browser's extension "JSONView" pointed out to me. This was because my keys were not strings... i.e. I had:

 {total: 0}

but I should've had:

 {"total" : 0}
懷念過去 2024-11-08 18:24:26

确实有更好的方法。

使用此处接受的答案(如何使用 Apache Velocity 进行 XML 转义?)为了进行初始设置,

您还需要添加速度工具依赖项:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
</dependency>

然后您可以使用 Velocity 的转义机制像这样的引擎(适合您的情况)

$esc.java("{total: 0}")

您还可以在此处查看更多转义选项(http ://velocity.apache.org/tools/devel/generic/EscapeTool.html

Indeed there is a better way of doing this.

use the accepted answer here (How to XML escaping with Apache Velocity?) to do the initial set-up

you would need to add the velocity-tools dependency as well :

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
</dependency>

and then you can use the escape mechanism of the Velocity Engine like this (for your case)

$esc.java("{total: 0}")

you can also checkout more escape options here(http://velocity.apache.org/tools/devel/generic/EscapeTool.html)

香草可樂 2024-11-08 18:24:26

我最终创建了一个常量 ocb = {ccb = } 并使用 $ocb$ccb

我确信有更好的方法。 ;)

I ended up creating a constant ocb = { and ccb = } and using $ocb and $ccb.

I am sure there is a better way. ;)

沧笙踏歌 2024-11-08 18:24:26

这看起来像你的情况:
http://velocity.apache.org/engine/devel/user-guide .html#escapinginvalidvtlreferences

更新:

首先尝试执行此操作:

#set( $startbrace = "{" )
#set( $endbrace = "}" )

然后将文本设置为:

$startbrace
    total : $listing.size()
$endbrace

Here is something that looks like your situation:
http://velocity.apache.org/engine/devel/user-guide.html#escapinginvalidvtlreferences

UPDATE:

Try to do this first:

#set( $startbrace = "{" )
#set( $endbrace = "}" )

and then make your text this:

$startbrace
    total : $listing.size()
$endbrace
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文