python - 转义 JSON Python 3,烧瓶
问题描述
我有这个问题,我需要对 json 字符串进行转义。有&而不是&
从python字典我这样做;其中record_prev 是一个python 字典
record_prev = self.stringify(app)
record_prev = record_prev.decode('string_escape')
response = make_response(
record_prev,
200
)
response.mimetype = "application/json"
字符串化函数:
def stringify(self, app=None):
record_prev = copy.deepcopy( self.response )
if app != None:
app.logger.debug( record_prev["message_data"] )
return json.dumps( record_prev )
#end def
我有一个问题record_prev = record_prev.decode('string_escape')
它抛出
AttributeError: 'str' object has no attribute 'decode'
解决方案
我认为 html 转义字符已经在字典中。出于这个原因,我有这个建议并使用werkzeug.utils.unescape和flask.jsonify。
from flask import jsonify
from werkzeug.utils import unescape
def deep_unescape(data):
if isinstance(data, str):
return unescape(data)
elif isinstance(data, (tuple, list)):
return [deep_unescape(e) for e in data]
elif isinstance(data, dict):
return {deep_unescape(k):deep_unescape(v) for k,v in data.items()}
else:
return data
data = {
'key0&val': '<v0>',
'key1&val': ['<v1.1>', '<v1.2>'],
'key2&val': {
'k0&v0': '<v0>',
'k1&v1': '<v1>',
},
'intval': 102,
'floatval': 1.2344
}
response = jsonify(deep_unescape(data))
推荐阅读
- firebase - React Native googleUser.getBasicProfile 不是函数
- java - 如何使用 Spring JmsTemplate 在 AWS SQS 消息上添加传递延迟
- python - 更改 Windows 按钮
- javascript - React onMouseDown:将事件与参数一起传递
- java - 我应该在我的主要方法中添加什么
- java - 绘制星号的钻石
- c# - c# microsoft graph - 如何在没有登录名和密码的情况下进行身份验证?
- java - 在android中实现语音到文本
- c# - 采用单个项目或列表的 C# 方法
- javascript - 正则表达式:排除几个单词的列表