Google App Engine Python simplejson 转义?

发布于 2024-11-16 14:34:13 字数 243 浏览 4 评论 0原文

例如,GAE 上的 django.utils.simplejson 版本在执行 js = json.dumps(my_dict_w_strings_w_newline_and_slash) 时会转义“/”字符,但不会转义“\n”,当我尝试执行以下操作时,这会导致问题json.loads(js) 在我的客户端其他地方。

关于如何解决问题有什么建议吗?这些字符串是 base64 编码的数据,因此会被破坏。

The version of django.utils.simplejson on GAE is for example escaping "/" characters, but not "\n" when doing js = json.dumps(my_dict_w_strings_w_newline_and_slash) which is causing problems when I try to json.loads(js) in my client someplace else.

Any suggestions on how to sort out a solution? The strings are base64 encoded data which get ruined by this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听风吹 2024-11-23 14:34:13

我尝试了 SDK 附带的 simplejson 版本(Django 0.96 和 1.2),并且都转义 '\n':

>>> simplejson.dumps({'foo': '\n'})
'{"foo": "\\n"}'

以及 http:// /shell.appspot.com/

Google App Engine/1.5.1
Python 2.5.2 (r252:60911, Mar 17 2011, 15:16:30) 
[GCC 4.3.1]

>>> from django.utils import simplejson
>>> simplejson.dumps({'foo': '\n'})
'{"foo": "\\n"}'
>>> simplejson.dumps('foo/bar')
'"foo\\/bar"'

I tried the simplejson version shipped with the SDK (Django 0.96 and 1.2) and both escape '\n':

>>> simplejson.dumps({'foo': '\n'})
'{"foo": "\\n"}'

And on http://shell.appspot.com/:

Google App Engine/1.5.1
Python 2.5.2 (r252:60911, Mar 17 2011, 15:16:30) 
[GCC 4.3.1]

>>> from django.utils import simplejson
>>> simplejson.dumps({'foo': '\n'})
'{"foo": "\\n"}'
>>> simplejson.dumps('foo/bar')
'"foo\\/bar"'
抹茶夏天i‖ 2024-11-23 14:34:13

我的同事建议:

if json.encoder.ESCAPE_DCT.get('/') != '/':
    json.encoder.ESCAPE_DCT['/'] = '/'

效果很好。

My colleague has suggested:

if json.encoder.ESCAPE_DCT.get('/') != '/':
    json.encoder.ESCAPE_DCT['/'] = '/'

which is working nicely.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文