2010-11-05 16 views
3

上單引號我試圖生成格式正確的JSON對象在JavaScript中使用。我試過simplejson.dumps(字符串),但它在我的本地機器上(在python shell中)與在服務器上(運行谷歌應用程序引擎)的行爲不同。例如,本地我會得到:simplejson沒有逃脫App Engine的服務器

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

這一切都看起來不錯。但是,當我在服務器上運行它,我得到

{「你好」:「嗨,我在這裏」}

其中單引號沒能逃脫,這將引發一個錯誤在我的JavaScript。

短期做二次string.replace("'", r"\'")的,沒有任何人有什麼建議?我不知所措,並已WAAY花了很多時間試圖弄明白......

回答

2

我認爲你正在被repr行爲VS實際輸出混淆。

>>> 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調用的結果,該結果使用repr Python的外殼印花 - 這逃脫它,這樣就可以削減,並在以後重新粘貼。但是,dumps生成的字符串中實際上沒有反斜槓。

1

有沒有需要在JSON單引號逃逸,而事實上在你的例子返回的字符串中沒有反斜線:

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

所以我懷疑你的javascript錯誤是別的。

+0

謝謝!我想我現在明白這個問題...我假設simplejson.dumps()將逃逸單引號,所以當jQuery的試圖處理輸出*不*逃脫單引號它認爲它實際上之前的JSON字符串結束。即:jQuery.parseJSON('{「你好」:「嗨,我在這裏」});被解釋爲jQuery.parseJSON({「hello」:「嗨,我'這是給我一個」失蹤)「的錯誤。 – npisenti 2010-11-05 21:11:32