2017-09-02 62 views
0

我的一个测试用例尝试使用下面的验证一些JSON:json.loads()总是抛出一个ValueError无论JSON输入

CONFIG = '../reconnoitre/config.json' 

print(is_json(CONFIG)) 

# return true is json is valid or false if unable to load 
def is_json(json_file): 
    try: 
    json_object = json.loads(json_file) 
    except ValueError: 
    return False 
    return True   

无论什么样的JSON我通过这个程序总是返回false ,例如:

{ 
    "test": "test" 
} 

仍然会返回错误值。鉴于函数的简单性 - 是否有更好的方法可以验证文件是否有效json?

+0

尝试'json.load()'或json与多个数据。怎么了? – campovski

回答

1

json.loads将尝试评估它的参数为json,但是你给它的文件名,这当然是没有效的json。将内容加载到字符串中,并将其传递到json.loads,或者甚至更好,在with open(...)块内使用json.load

+0

这......很有道理。不知道为什么我推测它会为我打开文件,深夜编码! – Codingo

+0

有趣的是,这也行不通,尝试''''json_object = json.loads(str(open(json_file,'r')))''' – Codingo

+0

尝试:'打开(json_file,“r”)为f: json_object = json.load(f)' – Jeronimo

相关问题