我有一串字符串,我需要分析每個字符串並檢查它是否是有效的JSON。 的Python的方式(EAFP)規定是這樣的:檢查字符串是否爲JSON而不引發異常?
import json
def parse_json(string):
try:
return json.loads(string)
except:
return string
的問題是,字符串顯著數量並不JSONs,並通過這個代碼提出的許多異常緩慢的過程頗有幾分。
我正在尋找一些方法來嘗試和解析文本爲JSON,返回某種預先定義的值(例如一個空的tuple()
),指示該字符串不是JSON兼容的。 如果這是最簡單的解決方案,我並不介意在標準的json軟件包(重寫一個或兩個函數..)時進行黑客攻擊。
有什麼建議嗎?
我非常懷疑開銷是捕捉異常,而是試圖首先解析字符串。 –
正如@Danield所指出的,除Python之外的處理相對便宜。檢查一個字符串是否有效JSON然後轉換它可能比你所做的要慢。但是,如果無效數據全部以相同的方式被破壞,那麼如果檢查該條件的方法非常快,您可以避免嘗試使用'loads()'來轉換它們。 – martineau
@DanielRoseman而try-except子句幾乎是免費的,但不會產生任何例外情況,但成本較高(例如http://stackoverflow.com/a/2522013/4369617)。由於我每天必須處理數以億計的字符串,這成爲一種負擔。 – redlus