我感興趣的有simplejson.loads()
成功解析如下:有什麼辦法可以讓simplejson不那麼嚴格?
{foo:3}
它拋出一個JSONDecodeError
說:「期待的屬性名稱」,但在現實中它是說:「我需要在我的屬性名雙引號」。這對我的用例來說很煩人,我寧願不那麼嚴格的行爲。我已經閱讀過文檔,但除了製作我自己的解碼器類外,我沒有看到任何明顯改變這種行爲的東西。
我感興趣的有simplejson.loads()
成功解析如下:有什麼辦法可以讓simplejson不那麼嚴格?
{foo:3}
它拋出一個JSONDecodeError
說:「期待的屬性名稱」,但在現實中它是說:「我需要在我的屬性名雙引號」。這對我的用例來說很煩人,我寧願不那麼嚴格的行爲。我已經閱讀過文檔,但除了製作我自己的解碼器類外,我沒有看到任何明顯改變這種行爲的東西。
不,這是不可能的。要成功解析使用simplejson,您首先需要將其轉換爲有效的JSON字符串。
根據您輸入的字符串的格式如何嚴格的是,這可能是非常簡單或非常複雜。
對於一個簡單的例子,如果你將永遠有一個JSON對象,只有字母和鍵突出(不帶引號)和整數作爲值,你可以使用下面將其轉化爲有效的JSON:
import re
your_string = re.sub(r'([a-zA-Z_]+)', r'"\1"', your_string)
例如:
>>> re.sub(r'([a-zA-Z_]+)', r'"\1"', '{foo:3, bar:4}')
'{"foo":3, "bar":4}'
您可以嘗試demjson。
>>> import demjson
>>> demjson.decode('{foo:3}')
{u'foo': 3}
所以,你想'simplejson'接受一些無效的JSON嗎? (這是JavaScript的地方引號是可選的。在JSON他們是強制性的。) – millimoose 2012-02-01 23:26:43
是啊,這就是我想要的東西。 :) – slacy 2012-02-01 23:29:28
我暗示的是「這是你不應該想要的東西。」 – millimoose 2012-02-01 23:31:10