Google App Engine Python simplejson转义?

时间:2011-06-22 19:01:50

标签: python google-app-engine simplejson

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

有关如何整理解决方案的任何建议?字符串是base64编码的数据,由此毁坏。

2 个答案:

答案 0 :(得分:3)

我尝试了随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"'

答案 1 :(得分:0)

我的同事建议:

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

效果很好。