2017-09-02 63 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

相關問題