2

たとえば、GAE の django.utils.simplejson のバージョンは、「/」文字をエスケープしていますが、「\n」はエスケープしていません。これを行うと、クライアントを別の場所js = json.dumps(my_dict_w_strings_w_newline_and_slash)にしようとすると問題が発生します。json.loads(js)

解決策を整理する方法について何か提案はありますか? 文字列は base64 でエンコードされたデータであり、これによって台無しになります。

4

2 に答える 2

3

SDK(Django 0.96および1.2)に同梱されているsimplejsonバージョンを試してみましたが、両方とも「\ 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"'
于 2011-06-22T23:21:06.030 に答える
0

私の同僚は次のように提案しました:

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

これはうまく機能しています。

于 2011-06-23T06:49:06.910 に答える