我有一串字符串,我需要分析每个字符串并检查它是否是有效的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