2010-10-15 59 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