3

JavaScriptで使用する適切にフォーマットされたjsonオブジェクトを生成しようとしています。simplejson.dumps(string) を試してみましたが、ローカル マシン (Python シェル) とサーバー (Google アプリ エンジンを実行) では動作が異なります。たとえば、ローカルでは次のようになります。

>>> s= {u'hello': u"Hi, i'm here"}
>>> simplejson.dumps(s)
'{"hello": "Hi, i\'m here"}'

これはすべて良さそうです。しかし、サーバーで実行すると、

{"こんにちは": "こんにちは、私はここにいます"}

一重引用符がエスケープされていないため、javascript でエラーがスローされます。

二次的なことをするstring.replace("'", r"\'")以外に、誰か提案はありますか? 私は途方に暮れていて、それを理解しようとしてすでに多くの時間を費やしてきました...

4

2 に答える 2

2

repr動作と実際の出力に混乱していると思います。

>>> s= {u'hello': u"Hi, i'm here"}
>>> simplejson.dumps(s)
'{"hello": "Hi, i\'m here"}'
>>> print simplejson.dumps(s)
{"hello": "Hi, i'm here"}

simplejson 呼び出しの結果を単純に要求すると、Python シェルはその結果を出力しreprます - を使用してエスケープし、後でカット アンド ペーストして戻すことができます。ただし、実際には、によって生成される文字列にバックスラッシュはありませんdumps

于 2010-11-05T19:55:12.663 に答える
1

JSON の一重引用符に必要なエスケープはありません。実際、例で返される文字列にバックスラッシュはありません。

>>> print simplejson.dumps(s)
{"hello": "Hi, i'm here"}

だから私はあなたのjavascriptエラーが何か違うと思う.

于 2010-11-05T18:50:36.080 に答える