2012-04-04 2 views
0

Ich brauche eine bequeme Möglichkeit, HTML-Zeichen in Zeichenkettenfeldern beim Senden von JSON zu entblößen. Ich dachte, eine benutzerdefinierte json.JSONEncoder schreiben würde den Trick tun. Mein Encoder sieht so aus:So entlarven Sie HTML-Zeichen beim Kodieren von JSON mit Python

import jinja2, json 

class EscapingJSONEncoder(json.JSONEncoder): 
    def default(self, obj): 
     if isinstance(obj, basestring): 
      obj = jinja2.Markup(obj).unescape() 
     return json.JSONEncoder.default(self, obj) 

Ich legte eine Debug-Anweisung innerhalb default aber es schien nie so vorausgesetzt, ich bin, dass der Encoder die String-Codierung behandelt, bevor es meine Gewohnheit default Implementierung erreicht.

Wie kann ich das erreichen?

+1

, wie Sie diese Klasse verwenden? – aschmid00

Antwort

0

Sie sollten das Kodierungsverfahren außer Kraft setzen, da ‚default‘ für String-Datentypen nicht

genannt wird
class EscapingJSONEncoder(json.JSONEncoder): 
    def encode(self, obj): 
     if isinstance(obj, basestring): 
      obj = jinja2.Markup(obj).unescape() 
     return json.JSONEncoder.encode(self, obj)