2012-04-04 28 views
0

我需要一種方便的方式在發送JSON時避開字符串字段中的HTML字符。我認爲寫一個自定義json.JSONEncoder會做伎倆。我的編碼器看起來像這樣:如何在使用Python編碼JSON時忽略HTML字符

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) 

我把調試語句中default,但它從來沒有出現過,所以我假定編碼器處理字符串編碼,它達到我的自定義default實施之前。

我該如何做到這一點?

+1

你如何使用這個類的「默認」不叫字符串數據類型? – aschmid00 2012-04-04 20:44:49

回答

0

您應該重寫編碼方法,因爲

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