2010-10-15 5 views
1

J'ai des problèmes avec json à mako. Je fais ceci:Encodage JSON à Mako?

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

où to_json est:

<%! 
    import simplejson as json 

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

cependant, au lieu de me donner

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

its me donner

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

donc change mako la " à " quelque part

que devrais-je faire à la place?

en revanche, Heres un script de test

import simplejson as json 

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

sortie

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

modifier

j'ai changé ma fonction à

<%! 
    import simplejson as json 

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

et il change le "à &quot;, donc c'est un problème avec mako, il semble.

+0

est-ce pas seulement parce que vous l'avez sorti sur une page HTML ?! – AndiDog

+0

J'en ai besoin en tant que paramètre de JS, mais non, la différence est qu'il ne devrait pas être codé. – Timmy

+0

Veuillez montrer le code qui insère le résultat de 'to_json (...)' dans votre sortie. Quelque part au milieu d'un bloc JavaScript je suppose ... – AndiDog

Répondre

1

semble être Theres un filtre automatique quelque part, alors quand je l'ai changé

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

à

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

pour désactiver les filtres, il est correct, merci

+1

Soyez reconnaissants pour le filtre, il est là pour aider à garder javascript injection/XSS de vous mordre! Mais une douleur quand tu ne le veux pas. –

+0

pour ne pas dire je ne suis pas reconnaissant, je ne savais pas! – Timmy

+0

Ce serait bien si vous pouviez dire à Mako d'ignorer les filtres par défaut à chaque fois que ce filtre est utilisé. Sinon, c'est une douleur – ubik