【问题标题】:How to unescape HTML characters when encoding JSON with Python使用 Python 编码 JSON 时如何对 HTML 字符进行转义
【发布时间】:2012-04-04 20:13:01
【问题描述】:

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

我怎样才能做到这一点?

【问题讨论】:

  • 你如何使用这个类?

标签: python json encoding escaping


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 2010-10-16
    • 2012-03-16
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2017-05-12
    相关资源
    最近更新 更多