如果你滿意你的腳本工作的罰款一會兒,然後隨機未能在一些不起眼的邊緣的情況下,我會去的eval。
如果你的代碼是穩健很重要,我會採取加simplejson的時間。你不需要C部分進行加速,所以將某些.py文件轉儲到某個目錄中確實不難。
由於一些可能咬你一個例子,JSON使用Unicode和simplejson返回的Unicode,而EVAL返回str的:
>>> simplejson.loads('{"a":1, "b":2}')
{u'a': 1, u'b': 2}
>>> eval('{"a":1, "b":2}')
{'a': 1, 'b': 2}
編輯:哪裏的eval()的行爲不同一個更好的例子:
>>> simplejson.loads('{"X": "\uabcd"}')
{u'X': u'\uabcd'}
>>> eval('{"X": "\uabcd"}')
{'X': '\\uabcd'}
>>> simplejson.loads('{"X": "\uabcd"}') == eval('{"X": "\uabcd"}')
False
編輯2:看到了另一個問題,今天所指出的SilentGhost:EVAL不處理真實 - >真,假 - >假,空 - >無正確。
>>> simplejson.loads('[false, true, null]')
[False, True, None]
>>> eval('[false, true, null]')
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'false' is not defined
>>>
來源
2009-07-05 01:28:43
Kiv
如果我沒有在託管環境中運行,我可能會*使用simplejson。不幸的是,我對我的Python環境沒有太多的控制權,我懷疑如何添加自定義軟件包會比編寫實際的腳本花費更長的時間;我們正在說50條線,上衣。同樣,我*不知道GC不會開始生成該轉義序列,但如果這樣做,腳本自然會安全地失敗,很明顯它會被破壞,並且修復很容易。 – 2009-07-05 00:52:31
如果解決方法很簡單,爲什麼不先用固定的方法來做? – 2009-07-05 01:29:07
因爲它涉及使用正則表達式來計算反斜槓。目前,腳本中沒有任何正則表達式,如果可以的話,我會這樣做。 :-) – 2009-07-05 01:35:24