2011-04-15 162 views
1

SORRY:這是我的壞。這個錯誤是由於json產生的不正確以及Chrome擴展「Chrome中的JSONView」造成的。看到我自己的答案(我必須自己回答 - 因爲我不能再刪除這個問題了)。逃離一個花括號{速度

我使用的速度(Maven版本org.apache.velocity 1.7)作爲模板引擎,我想輸出如下:現在

{ 
    total : 234 
} 

當我嘗試:

{ 
    total : $listing.size() 
} 

我得到一個錯誤:

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

enter image description here

,當我試圖逃跑的花括號:

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

我得到的最終輸出!:

\{ 
    total : 234 
\} 
+0

咦?速度不關心孤立的括號。他們不需要轉義。你使用什麼版本?你能否顯示你的解析錯誤的其餘部分? – 2011-04-15 14:46:48

+0

我得到一個錯誤 - 我沒有制定規則。這就是我在JavaScript的小彈出窗口中遇到的所有錯誤,這是因爲我看不到源代碼中的js。 – drozzy 2011-04-15 14:47:25

+0

我正在使用Maven的版本 - org.apache.velocity 1.7 – drozzy 2011-04-15 14:52:57

回答

0

對不起,這是由於我生產的JSON不正確,Chrome瀏覽器的擴展名爲「JSONView」。這是因爲我的鑰匙是不是字符串...即我有:

{total: 0} 

,但我應該有:

{"total" : 0} 
0

我結束了創建一個常數ocb = {ccb = }和使用$ocb的轉義字符和$ccb

我相信還有更好的辦法。 ;)

0

的確有這樣做的更好的方法。

使用這裏接受的答案(How to XML escaping with Apache Velocity?)做初始設置

你需要添加速度的工具的依賴,以及:

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

,然後你可以使用(你的情況)

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

你也可以在這裏結賬更多的逃生選項(http://velocity.apache.org/tools/devel/generic/EscapeTool.html