首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json.dumps():转义正斜杠

json.dumps():转义正斜杠
EN

Stack Overflow用户
提问于 2014-11-25 14:45:41
回答 2查看 18.9K关注 0票数 10

由于正斜杠只能出现在JSON序列化对象内的字符串中,并且不能转义(在默认设置中),因此可以使用

代码语言:javascript
复制
json.dump(some_dict).replace('/', r'\/')

工作可靠,但看上去很烦人。

我知道正斜杠不一定是逃脱的,但是您可以逃脱它们,而且为了我的使用,我希望能让它们逃脱。

是否有一种方法可以让JSONEncoder避免手动转义正斜杠?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-25 14:57:56

只在encode_html_chars=True时转义正斜杠

看看这个- https://github.com/esnme/ultrajson/pull/114

JSON规范说,正斜杠应该隐式转义。

这里有一个在JSONEncoder中实现它的解决方案。这只是因为您创建了一个转义字典,并在手工之前进行了计算,然后进行了编码。

https://chromium.googlesource.com/external/googleappengine/python/+/dc33addea2da464ca07e869cb11832e1ae82da9d/lib/django/django/utils/simplejson/encoder.py

希望能帮上忙。

-

在上述解决方案的基础上,还有另一个原因可以转义字符。正如kay所说,它给了我们额外的睡眠。它能防止攻击。所以上面的解决方案解决了所有的问题。

代码语言:javascript
复制
ESCAPE_DCT = {
    # escape all forward slashes to prevent </script> attack
    '/': '\\/',
    '\\': '\\\\',
    '"': '\\"',
    '\b': '\\b',
    '\f': '\\f',
    '\n': '\\n',
    '\r': '\\r',
    '\t': '\\t',
}
票数 9
EN

Stack Overflow用户

发布于 2018-10-23 16:00:10

按ujson文档使用escape_forward_slashes

escape_forward_slashes控制是否转义正斜杠(/)。默认值为True:

代码语言:javascript
复制
>>> ujson.dumps("http://esn.me")
'"http:\/\/esn.me"'
>>> ujson.dumps("http://esn.me", escape_forward_slashes=False)
'"http://esn.me"'

这里

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27129681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档