我需要一种方便的方法来在发送JSON时在字符串字段中浏览HTML字符。我以为写一个自定义json.JSONEncoder
就可以了。我的编码器看起来像这样:
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
实现之前处理字符串编码。
我怎样才能做到这一点?
答案 0 :(得分:0)
您应该覆盖encode方法,因为不会为字符串数据类型
调用'default'class EscapingJSONEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, basestring):
obj = jinja2.Markup(obj).unescape()
return json.JSONEncoder.encode(self, obj)