2010-10-15 60 views
1

我在麻煩json的麻煩。我這樣做:在Mako中編碼JSON?

${ to_json(dict(a = 1, b = 2)) } 

其中to_json是:

<%! 
    import simplejson as json 

    def to_json(d): 
     return json.dumps(d) 
%> 

然而,不是給我

{"a": "1", "b": "2"} 

它給我

{&quot;a&quot;: 1, &quot;b&quot;: 2} 

所以鯖改變「到"某處

我應該做些什麼呢?

相比之下,繼承人測試腳本

import simplejson as json 

print json.dumps(dict(a=1,b=2)) 

輸出

{"a": 1, "b": 2} 

編輯

我改變了我的功能

<%! 
    import simplejson as json 

    def to_json(d): 
     return "{\"a\": 1}" 
%> 

它改變了「到&quot;,所以它似乎與mako有關。

+0

是不是僅僅因爲你輸出到HTML頁面?! – AndiDog 2010-10-15 20:22:03

+0

我需要它作爲JS的參數,但不,它不應該被編碼。 – Timmy 2010-10-15 20:25:33

+0

請在輸出中顯示將'to_json(...)'結果插入的代碼。在一個JavaScript塊的中間,我猜... – AndiDog 2010-10-15 20:29:48

回答

1

好像那裏有一個自動過濾器的地方,所以當我改變

${ to_json(dict(a = 1, b = 2)) } 

${ to_json(dict(a = 1, b = 2)) | n } 

關掉過濾器,它是好的,感謝

+1

感謝過濾器,它有助於保持JavaScript注入/ XSS免於咬你!但是當你不需要時會感到痛苦。 – 2010-10-15 20:43:43

+0

不要說我不感謝,只是不知道! – Timmy 2010-10-15 20:46:39

+0

如果您可以通過某種方式告訴Mako在使用此過濾器時忽略默認過濾器,那將會很好。否則,這是一個痛苦 – ubik 2011-08-08 08:55:44