由于正斜杠只能出现在JSON序列化对象内的字符串中,并且不能转义(在默认设置中),因此可以使用
json.dump(some_dict).replace('/', r'\/')工作可靠,但看上去很烦人。
我知道正斜杠不一定是逃脱的,但是您可以逃脱它们,而且为了我的使用,我希望能让它们逃脱。
是否有一种方法可以让JSONEncoder避免手动转义正斜杠?
发布于 2014-11-25 14:57:56
只在encode_html_chars=True时转义正斜杠
看看这个- https://github.com/esnme/ultrajson/pull/114
JSON规范说,正斜杠应该隐式转义。
这里有一个在JSONEncoder中实现它的解决方案。这只是因为您创建了一个转义字典,并在手工之前进行了计算,然后进行了编码。
希望能帮上忙。
-
在上述解决方案的基础上,还有另一个原因可以转义字符。正如kay所说,它给了我们额外的睡眠。它能防止攻击。所以上面的解决方案解决了所有的问题。
ESCAPE_DCT = {
# escape all forward slashes to prevent </script> attack
'/': '\\/',
'\\': '\\\\',
'"': '\\"',
'\b': '\\b',
'\f': '\\f',
'\n': '\\n',
'\r': '\\r',
'\t': '\\t',
}发布于 2018-10-23 16:00:10
按ujson文档使用escape_forward_slashes,
escape_forward_slashes控制是否转义正斜杠(/)。默认值为True:
>>> ujson.dumps("http://esn.me")
'"http:\/\/esn.me"'
>>> ujson.dumps("http://esn.me", escape_forward_slashes=False)
'"http://esn.me"'见这里。
https://stackoverflow.com/questions/27129681
复制相似问题