0

在发送 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实现之前处理它。

我怎样才能做到这一点?

4

1 回答 1

0

您应该覆盖编码方法,因为字符串数据类型不调用“默认”

class EscapingJSONEncoder(json.JSONEncoder):
    def encode(self, obj):
        if isinstance(obj, basestring):
            obj = jinja2.Markup(obj).unescape()
        return json.JSONEncoder.encode(self, obj)
于 2012-04-04T22:13:53.353 回答